博客
关于我
CodeForces - 10A_模拟
阅读量:136 次
发布时间:2019-02-28

本文共 1273 字,大约阅读时间需要 4 分钟。

Tom的笔记本电脑有三种工作状态,每种状态对应不同的功耗。正常模式下,每分钟消耗P1瓦特;如果在T1分钟内没有操作,系统会切换到屏幕保护模式,功耗降为P2瓦特;再过T2分钟后,系统进入睡眠模式,功耗降为P3瓦特。如果在任何一种模式下,Tom再次进行操作,系统会立即切换回正常模式。

Tom的使用时间被分为n个连续的时间段,每个时间段由[l_i, r_i]表示。每个时间段内,Tom都在持续操作笔记本。那么,问题来了:在整个时间区间[l_1, r_n]内,笔记本总共消耗了多少电量?

输入数据包括n、P1、P2、P3、T1、T2这六个整数,其中n表示时间段的数量,P1、P2、P3分别是三个工作状态下的功耗,T1和T2分别是切换到屏幕保护模式和睡眠模式所需的时间。接下来的n行每行包含两个整数l_i和r_i,表示第i个时间段的起始和结束时间。

为了计算总功耗,我们需要处理时间段之间的间隔时间。具体来说,我们需要分析在每两个相邻时间段之间的时间段,以及在最后一个时间段之后的时间段,计算这些间隔时间内笔记本的功耗。

对于每个时间段的开始和结束时间,我们可以计算出在正常模式下的持续时间,以及切换到其他模式的时间。需要注意的是,如果一个间隔时间完全小于T1,那么整个间隔时间都在正常模式下;如果在T1到T1+T2之间,则部分时间在正常模式,部分时间在屏幕保护模式;如果超过T1+T2,则后面的时间全部在睡眠模式。

通过这种方式,我们可以逐步计算出每个时间段和间隔时间内的功耗总和,最终得到整个时间区间内的总功耗。

举个例子,假设n=1,P1=3,P2=2,P3=1,T1=5,T2=100,时间段是[0, 10]。那么,在这个时间段内,笔记本一直处于正常模式,功耗为3瓦特。时间长度是10分钟,总功耗为3*10=30瓦特·分钟。

另一个例子,假设n=2,P1=8,P2=4,P3=2,T1=5,T2=1020,时间段是[0, 100]和[3050, 100]。第一个时间段持续100分钟,功耗为8瓦特·分钟。第二个时间段从3050分钟开始,持续100分钟。在这两个时间段之间的间隔时间是3050-100=2950分钟。我们需要计算这2950分钟内的功耗。

对于2950分钟的间隔时间,首先计算T1=5分钟,超过T1后,系统切换到屏幕保护模式,功耗降为4瓦特·分钟。再过T2=1020分钟后,系统切换到睡眠模式,功耗降为2瓦特·分钟。因此,2950分钟可以分为:

  • 5分钟:正常模式,功耗8瓦特·分钟。
  • 1020分钟:屏幕保护模式,功耗4瓦特·分钟。
  • 1020分钟:睡眠模式,功耗2瓦特·分钟。

总功耗为:85 + 41020 + 2*1020 = 40 + 4080 + 2040 = 6160瓦特·分钟。

再加上两个时间段的功耗,总功耗为:6160 + 8100 + 4100 = 6160 + 800 + 400 = 7360瓦特·分钟。

因此,最终的总功耗为7360瓦特·分钟。

通过这种方式,我们可以准确地计算出笔记本在整个时间区间内的总功耗。

转载地址:http://jeod.baihongyu.com/

你可能感兴趣的文章
nrf24l01+arduino
查看>>
nrf开发笔记一开发软件
查看>>
nrm —— 快速切换 NPM 源 (附带测速功能)
查看>>
nrm报错 [ERR_INVALID_ARG_TYPE]
查看>>
NS3 IP首部校验和
查看>>
NSDateFormatter的替代方法
查看>>
NSError 的使用方法
查看>>
NSGA-Ⅲ源代码
查看>>
nsis 安装脚本示例(转)
查看>>
NSJSON的用法(oc系统自带的解析方法)
查看>>
nslookup 的基本知识与命令详解
查看>>
NSNumber与NSInteger的区别 -bei
查看>>
NSOperation基本操作
查看>>
NSRange 范围
查看>>
NSSet集合 无序的 不能重复的
查看>>
NSURLSession下载和断点续传
查看>>
NSUserdefault读书笔记
查看>>
NS图绘制工具推荐
查看>>
NT AUTHORITY\NETWORK SERVICE 权限问题
查看>>
NT symbols are incorrect, please fix symbols
查看>>