P1003越野跑

来源:互联网 发布:金铅笔网络运营 编辑:程序博客网 时间:2024/06/10 01:46

思路:由于任何一种方案每段路都会走两次,所以我们考虑每段路的来回花费可以单方向计算,直接判断是否超过m即可,算法复杂度O(n);

#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int cost,j;struct name{int z,n;}a[1000001];int main (){char x;int m,t,u,f,d;cin>>m>>t>>u>>f>>d;for (int i=1;i<=t;i++){cin>>x;//读入判断 if (x=='u') {a[i].z=u; a[i].n=d;}if (x=='f'){a[i].z=f;a[i].n=f;}if (x=='d') {a[i].z=d;a[i].n=u; }}while(cost<m){j++;cost+=a[j].z+a[j].n;//判断每段路的话费是否超过m}cout<<j-1;//由于最后会再执行一次循环于是输出减一 return 0;}


0 0
原创粉丝点击