题意:就是计算从最开始的时间到最后的时间,这一段过程耗了多少的电能。
个人感觉主要就是条件的判断,看从第一个模式到第二个模式转换的时间加上原来最后的时间与下一个开始的时间进行比较,然后从第二个模式到第三个模式也是像这样与下一个开始的时间进行比较就好了!
#include <iostream> using namespace std; struct NODE{ int st,ed; }node [105]; int main() { int n,p1,p2,p3,t1,t2; cin>>n>>p1>>p2>>p3>>t1>>t2; for(int i=0;i<n;++i) cin>>node[i].st>>node[i].ed; int sum=0; for(int i=0;i<n;++i) { if(i==n-1) { sum+=(node[i].ed-node[i].st)*p1; //cout<<sum<<endl; } else { if(node[i].ed+t1<=node[i+1].st) { sum+=(node[i].ed-node[i].st+t1)*p1; if(node[i].ed+t1+t2<=node[i+1].st) { sum+=t2*p2; sum+=(node[i+1].st-node[i].ed-t1-t2)*p3; // cout<<sum<<endl; } else sum+=(node[i+1].st-node[i].ed-t1)*p2; } else { sum+=(node[i+1].st-node[i].st)*p1; //cout<<sum<<" sdf"<<endl; } } } cout<<sum<<endl; return 0; }