20.电能消耗
- 【问题描述】
- 【输入形式】
- 【输出形式】
- 【样例输入】
- 【样例输出】
- 题解
- 思路
- 代码
【问题描述】
汤姆对他最喜欢的笔记本电脑的耗电量很感兴趣。他的笔记本电脑有三种模式。在正常模式下,笔记本电脑每分钟消耗P1瓦。在汤姆最后一次移动鼠标或触摸键盘后的T1分钟,屏幕保护程序启动,每分钟的功耗变化为P2瓦。最后,从屏幕保护程序启动到T2分钟后,笔记本电脑切换到“睡眠”模式,每分钟消耗P3瓦。 当笔记本电脑处于第二或第三模式时,如果汤姆移动鼠标或触摸键盘,则切换到第一种(正常)模式。 汤姆使用笔记本电脑工作的时间可以分为n个时间间期[l1, r1]、[l2, r2]、…、[ln, rn]。在每个间期,汤姆连续移动鼠标并按下键盘。 在间期之间,汤姆什么都不做。请找出在间期[l1, rn]笔记本电脑的总耗电量。
【输入形式】
第一行包含6个整数n、P1、P2、P3、T1、T2(1<=n<=100,0<=P1、P2、P3<=100,1<=T1、T2<=60)。接下来的n行包含了汤姆工作的期间,第i行是两个用空格分隔的整数li和ri(0<=li<=ri<=1440, 当i<n时ri<li+1), 表示工作期间的开始时间和结束时间。
【输出形式】
输出总的耗电量。
【样例输入】
2 8 4 2 5 10
20 30
50 100
【样例输出】
570
题解
思路
- 1.按照题目模拟即可,就是阅读理解
- 注意:1.第一个期间前面的时间是不算的
- 注意:2.t2是指到达第二个状态后的时间,所以第二层是<=t1+t2
代码
#include<iostream>
using namespace std;
int n,p1,p2,p3,t1,t2;
/*******************求期间功率***************************/
int get_sum(int time){if(time<=t1) return time*p1;else if(time<=t2+t1) return t1*p1+(time-t1)*p2;else return t1*p1+t2*p2+(time-t2-t1)*p3;
}
int main(){cin>>n>>p1>>p2>>p3>>t1>>t2;int pre_left,pre_right,left,right;int sum_p=0;for(int i=0;i<n;i++){int left,right;cin>>left>>right;sum_p+=(right-left)*p1;if(i!=0)sum_p+=get_sum(left-pre_right);pre_left=left;pre_right=right;}cout<<sum_p<<endl;return 0;
}