1.20 电能消耗

【问题描述】

 笔记本电脑有三种模式。
 在正常模式下,笔记本电脑每分钟消耗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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值