主页
搜索
最近更新
数据统计
申请密钥
系统公告
1
/
1
请查看完所有公告
题解 P1016 【旅行家的预算】
最后更新于 2025-07-31 11:47:40
作者
Little_Zyl
分类
题解
题解
P1016
复制 Markdown
查看原文
删除文章
更新内容
不得不说,这题太水了。 直接上代码: ```cpp #include<bits/stdc++.h>//万能头 using namespace std; struct poin{ float d,p; }sz[100005]; float dd,c,lc,p,sum,zdlc,oil; int n; int main(){ cin>>dd>>c>>lc>>p>>n; for(int i=1;i<=n;i++)cin>>sz[i].d>>sz[i].p; sz[0].d=0,sz[0].p=p,sz[n+1].d=dd;//简单处理 zdlc=lc*c; for(int i=0;i<=n;){//康康还有没有加油站 int next=0,stop=0; float tmp=1e8; for(int j=i+1;j<=n+1;j++){ if(sz[j].d-sz[i].d>zdlc)break; if(sz[j].p<sz[i].p){ next=j; break; } else if(sz[j].p<tmp)stop=j,tmp=sz[j].p; } if(next!=0){ float jl=sz[next].d-sz[i].d; if(oil*lc>=jl)oil-=jl/lc; else{ sum+=(jl/lc-oil)*sz[i].p;//加油 oil=0.0; } i=next; } else if(stop!=0){//把油加满 sum+=sz[i].p*(c-oil); oil=c-(sz[stop].d-sz[i].d)/lc; i=stop; } else{ cout<<"No Solution";//油没了,车爆了 return 0; } } printf("%.2f",sum); return 0;//写了不会咋样 } ```
正在渲染内容...
点赞
0
收藏
0