【问题描述】
笔记本电脑有三种模式。
在正常模式下,笔记本电脑每分钟消耗P1瓦。
在汤姆最后一次移动鼠标或触摸键盘后的T1分钟,屏幕保护程序启动,每分钟的功耗变化为P2瓦。
最后,从屏幕保护程序启动到T2分钟后,笔记本电脑切换到“睡眠”模式,每分钟消耗P3瓦。
当笔记本电脑处于第二或第三模式时,如果汤姆移动鼠标或触摸键盘,则切换到第一种(正常)模式。
汤姆使用笔记本电脑工作的时间可以分为n个时间间期[l1, r1]、[l2, r2]、...、[ln, rn]。
在每个间期,汤姆连续移动鼠标并按下键盘。
在间期之间,汤姆什么都不做。
请找出在间期[l1, rn]笔记本电脑的总耗电量。
代码1(ac):
#include<iostream>
using namespace std;
struct Time
{
int begin;
int end;
};
int main()
{
int c=0,n,p1,p2,p3,t1,t2,sum=0;
cin>>n>>p1>>p2>>p3>>t1>>t2;
Time t[n];
int gap[n-1];
for(int i=0;i<n;i++)
{
cin>>t[i].begin>>t[i].end;
sum+=(t[i].end-t[i].begin)*p1;
if(i>0) gap[c++]=t[i].begin-t[i-1].end;
}
for(int i=0;i<n-1;i++)
{
if(gap[i]<=t1) sum+=gap[i]*p1;
else if(gap[i]>t1&&gap[i]<=t1+t2) sum+=t1*p1+(gap[i]-t1)*p2;
else sum+=t1*p1+t2*p2+(gap[i]-t1-t2)*p3;
}
cout<<sum;
}
代码2(最开始写的版本,只能对样例和数据四,不知道错哪了)
#include<iostream>
using namespace std;
struct Time
{
int begin;
int end;
};
int main()
{
int c=0,n,p1,p2,p3,t1,t2,sum1=0,sum2=0,sum3=0;
cin>>n>>p1>>p2>>p3>>t1>>t2;
Time t[n];
int gap[n-1];
for(int i=0;i<n;i++)
{
cin>>t[i].begin>>t[i].end;
sum1+=t[i].end-t[i].begin;
if(i>0) gap[c++]=t[i].begin-t[i-1].end;
}
for(int i=0;i<n-1;i++)
{
if(gap[i]<=t1) sum1+=gap[i];
else sum1+=t1;
if(gap[i]>t1&&gap[i]<=t1+t2) sum2+=gap[i]-t1;
else sum2+=t2;
if(gap[i]>t1+t2) sum3+=gap[i]-t1-t2;
}
int sum=p1*sum1+p2*sum2+p3*sum3;
cout<<sum;
}