ACM 模拟 Just Finish it up
2017-07-25 11:39
183 查看
滴,集训第八天打卡。
今天还是第八章训练,看着书上的分析做了一下午,感觉人生得到了升华...
UVA 11093 Just Finish it up
题目大意:环形跑道上有N个加油站,编号为1~N.第i个加油站可以加pi升油,从加油站i开到下一站需要qi升油。你可以选择一个加油站作为起点,初始油箱为空,但可以立即加油。任务是选择一个起点,使得可以走完一圈。
思路:枚举模拟,考虑一号加油站,直接模拟判断它是否为解。如果是,直接输出,如果不是,说明在模拟过程中遇到了某个加油站p,在从它开到加油站p+1时油没了。于是下一次模拟直接从p+1开始即可。
今天还是第八章训练,看着书上的分析做了一下午,感觉人生得到了升华...
UVA 11093 Just Finish it up
题目大意:环形跑道上有N个加油站,编号为1~N.第i个加油站可以加pi升油,从加油站i开到下一站需要qi升油。你可以选择一个加油站作为起点,初始油箱为空,但可以立即加油。任务是选择一个起点,使得可以走完一圈。
思路:枚举模拟,考虑一号加油站,直接模拟判断它是否为解。如果是,直接输出,如果不是,说明在模拟过程中遇到了某个加油站p,在从它开到加油站p+1时油没了。于是下一次模拟直接从p+1开始即可。
#include <stdio.h> int main() { int t,n,i,j,a[100005],b[100005],o=1,s,p,k,kk; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); printf("Case %d: ",o++); s=0;p=0;k=0;kk=0; while(p<n) { k=0;s=0; for(i=p;i<n+p;i++) { j=i; if(j>=n)//环形跑道,要绕一圈 j-=n; s+=a[j]; s-=b[j]; if(s<0) { p=j+1;//起点变更 k=1; break; } } if(i!=j&&k==1)break; if(k==0) { kk=1; printf("Possible from station %d\n",p+1); break; } } if(kk==0) printf("Not possible\n"); } }
相关文章推荐
- UVA 11093 Just Finish it up(模拟|想法)
- Uva11093 Just Finish it up【模拟】【例题8-13】
- uva 11093 Just Finish it up (环形跑道水题_模拟)
- UVa11093 Just Finish it up (贪心+思路)
- uva 11093-Just Finish it up【贪心?链表】
- 优化(Just Finish it up,uva 11093)
- uva 11093 Just Finish it up
- uva 11093 Just Finish it up
- uva 11093 just finish it up
- 解题报告 之 UVA11093 Just Finish it up
- uva 11093——Just Finish it up
- 11093 - Just Finish it up
- 【高效算法设计——跳跃枚举】Uva 11093 Just Finish it up
- UVA - 11093 Just Finish it up 环路
- UVA 11093 Just Finish it up(模拟题)
- 【例题 8-13 UVA - 11093】Just Finish it up
- Uva 11093 Just Finish it up——思路题
- UVA - 11093 - Just Finish it up
- UVa 11093 Just Finish it up
- [贪心]UVa11093 - Just Finish it up