CCF2018年:小明放学C++答案
题目背景
汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。
问题描述
一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状态。请帮忙计算小明此次回家所需要的时间。
输入格式
输入的第一行包含空格分隔的三个正整数 r、y、g,表示红绿灯的设置。这三个数均不超过 106。
输入的第二行包含一个正整数 n,表示小明总共经过的道路段数和路过的红绿灯数目。
接下来的 n 行,每行包含空格分隔的两个整数 k、t。k=0 表示经过了一段道路,将会耗时 t 秒,此处 t 不超过 106;k=1、2、3 时,分别表示出发时刻,此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 t,此处 t 分别不会超过 r、y、g。
输出格式
输出一个数字,表示此次小明放学回家所用的时间。
样例输入
30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3
样例输出
46
样例说明
小明先经过第一段路,用时 10 秒。第一盏红绿灯出发时是红灯,还剩 5 秒;小明到达路口时,这个红绿灯已经变为绿灯,不用等待直接通过。接下来经过第二段路,用时 11 秒。第二盏红绿灯出发时是黄灯,还剩两秒;小明到达路口时,这个红绿灯已经变为红灯,还剩 11 秒。接下来经过第三、第四段路,用时 9 秒。第三盏红绿灯出发时是绿灯,还剩 10 秒;小明到达路口时,这个红绿灯已经变为红灯,还剩两秒。接下来经过最后一段路,用时 3 秒。共计 10+11+11+9+2+3 = 46 秒。
评测用例规模与约定
有些测试点具有特殊的性质:
* 前 2 个测试点中不存在任何信号灯。
测试点的输入数据规模:
* 前 6 个测试点保证 n ≤ 103。
* 所有测试点保证 n ≤ 105。
#include <iostream>
typedef long long ll; //用long long,用int会爆掉内存
using namespace std;int main()
{ll r, y, g;cin >> r >> y >> g;ll n;cin >> n;int input[n][2];int k, t;ll result = 0;ll temp = 0;for (int i = 0; i < n; i++){cin >>k >> t;input[i][0] = k;input[i][1] = t;}for (int i = 0; i < n; i++){temp = result%(r + y + g);if (input[i][0] == 0){result = result + input[i][1]; }else if(input[i][0] == 1){if(temp < input[i][1]){result = result + input[i][1] - temp; }else if(temp < input[i][1] + g){continue;}else if(temp < input[i][1] + g + y){result = result + input[i][1] + g + y - temp + r;}else{result = result + r + y + g + input[i][1] - temp;}}else if(input[i][0] == 2){if(temp < input[i][1]){result = result + input[i][1] - temp + r; }else if(temp < input[i][1] + r){result = result + r + input[i][1] - temp;}else if(temp < r + input[i][1] + g){continue;}else{result = result + r + y + g - temp + r + input[i][1];}}else if(input[i][0] == 3){if (temp < input[i][1]){continue;}else if(temp < input[i][1] + y){result = result + input[i][1] + y - temp + r;}else if(temp < input[i][1] + y + r){result = result + input[i][1] + y + r - temp;}else{continue;}}}cout << result;return 0;
}
CCF2018年:小明放学C++答案相关推荐
- CCF2018年12月真题之小明放学
之前由于手误把小明上学题目的博客写成了小明放学,在此致歉. 今日补上小明放学题目的分析与代码. 题目背景: 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项 ...
- 【CCF】201812-2小明放学
问题描述 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明" ...
- CCF201812-2 小明放学
试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明&quo ...
- ##CSP 201812-2 小明放学(C语言)(100分)
题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明"终端,可以看到光明区所有红绿灯此时此刻的状 ...
- CCF201812-2 小明放学(100分)【序列处理】
题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明"终端,可以看到光明区所有红绿灯此时此刻的状 ...
- CCF CSP 小明放学
一.题目 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光 ...
- csp试题2:小明放学
csp试题2:小明放学 题目 分析 代码 总结 题目 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过&qu ...
- CCF201812-2 小明放学(JAVA)
问 题 描 述: 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明"终端,可以看到光明区所有 ...
- 小明放学(30分)求大佬帮忙看看哪里有问题
时间限制:1s 内存限制:512.0mb 题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明" ...
最新文章
- vsftpd被selinux阻止
- goroutine sync.Mutex互斥锁Lock的使用
- idea java主题_IDEA变身超级形态,需要这个酷炫主题
- 学习java 第三天 数据类型以及存储大小取值范围 (one 大白 (●—●))
- 爬去当当热销图书信息
- 关于网络促销活动对大学生购物的影响的调研报告
- 【渝粤教育】国家开放大学2018年秋季 1046t金融学 参考试题
- 许又声发表新春贺辞:潮涌东方 携手奋进
- 彩色图像的直方图绘制
- 解决 ERROR: Could not find a version that satisfies the requirement 的一种思路
- 更换SSD系统盘-PE重装系统
- 无心剑中译伊丽莎白·毕肖普《一门技艺》
- js手机号码校验,邮箱校验
- 北理工通报方岱宁院士处理结果
- [agc012e]Camel and Oases
- Python:模拟邮箱登陆
- NYOJ-61 传纸条 双线动态
- 开漏极、开集电极输出
- 机器学习真能产生智能决策吗?
- fat32转ntfs解决大于4G文件不能保存问题