CSP练习4:201812-02小明放学

CCF CSP201812-2小明放学(c++100) CCF CSP201812-2小明放学 逻辑简单题 #include<iostream> using namespace std; int main(){ long long int light[3], n, ans = 0; //r,g,y cin>>light[0]>>light[2]>>light[1]>>n; int sum = light[0] + light[1] + light[2]; for(int i = 0; i & 阅读详情

题目背景

  汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。

问题描述

  一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状态。请帮忙计算小明此次回家所需要的时间。

输入格式

  输入的第一行包含空格分隔的三个正整数 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>
using namespace std;
int main(void)
{
	long long  red, yellow, green;
	cin >> red;
	cin >> yellow;
	cin >> green;
	int length;
	cin >> length;
	long long turn;
	turn = red + yellow + green;//在这里代表63
	long long  sum = 0;
	int a[100000][2];
	for (int i = 0; i < length; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			cin >> a[i][j];
		}
	}
	//将所有数据输入完毕,进行时间的计算
	
	for (int p = 0; p < length; p++) 
	{
		if (a[p][0] == 0) 
		{
			sum = sum + a[p][1];
		}
		else if (a[p][0] == 1) 
		{
			if (sum <= a[p][1]) 
			{
				sum = a[p][1];
			}
			else 
			{
				long long t;
				t = sum - a[p][1];
				int yu = t % turn;
				if (yu <= green) //此时是绿灯
				{
					sum = sum + 0;
				}
				else//此时不是绿灯
				{
					sum = sum + turn - yu;
				}
				
			}
		}
		else if(a[p][0] == 2)
		{
			if (sum <= a[p][1]) 
			{
				sum = a[p][1] + red;
			}
			else 
			{
				long long  t;
				t = sum - a[p][1];
				int yu = t % turn;
				if (yu <= red) 
				{
					sum = sum + (red - yu);
				}
				else if (yu > red && yu <= (red + green)) 
				{
					sum = sum + 0;//不需要等待
				}
				else if (yu > (red + green)) 
				{
					sum = sum + (turn - yu) + red;
				}
			}
		}
		else if (a[p][0] == 3) 
		{
			if (sum < a[p][1]) 
			{
				sum = sum + 0;
			}
			else 
			{
				long long  t;
				t = sum - a[p][1];
				int yu = t % turn;
				if (yu < yellow) 
				{
					sum = sum + (yellow - yu) + red;
				}
				else if (yu >= yellow && yu < (yellow + red)) 
				{
					sum = sum + (yellow + red - yu);
				}
			}
		}
	}
	cout << sum;
	system("PAUSE");
	return 0;
}

本题有一下三点需要注意:

1.由于可能刚做完第一题的原因,会自动的将数组a的大小设置为[100][2]而实际在本题中n的范围是10^5,所以应该是[100000][2]

2.因为red green yellow这几个数是在10^6大小下的,很可能会出现数据过大,相加后导致int  类型不够用,所以这个时候就要将其定义为long long ,同样的在if条件语句下的中间变量也要用long long 类型

3.根据2我们就可以推断出来同样的,sum一定要定位long long.

 

 

 

 

CSP 201812-2小明放学(Java) 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。 问题描述   一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”... 阅读详情

相关推荐

CCF CSP认证201812-2 小明放学

201812-2 小明放学 题目 思路 t-sum%T就是k灯还剩多少时间,如果是负值,说明k灯已过,加下一个灯亮的时间就是下个灯还剩的时间,如果是负值就再往下推一个。 可以画个图自己理解理解,我懒得画了。 详见代码。 AC代码如下 #include<cstdio> int main(){ int ryg[3],k,n; long long sum=0,t; scanf(...

weixin_43944910的博客 461

小明放学——CCFCSP认证题目

题目内容: 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。 问题描述   一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“...

ding_programmer的博客 723

CCF CSP2017.09 第11次题目答案代码.docx

CCF CSP 2017.09 第11次 题目 解析 答案C++ 100分代码.

【题解】 ccf csp 201812-2 小明放学

试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。 问题描述   一次放学...

weixin_44505865的博客 3349

HMMER实战:从零部署到序列分析

本文详细介绍了HMMER工具的安装与使用,从源码编译到环境配置,再到核心工具hmmbuild、hmmsearch等的实战应用。通过球蛋白序列分析案例,展示了HMMER在生物信息学中的强大功能,帮助读者快速掌握序列分析技巧。

weixin_42529366的博客 251

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

CSP CCF: 201812-2 小明放学 (C++)

目录题目来源思路80分代码100分 题目来源 小明放学 思路 红绿灯亮的顺序: 绿灯->黄灯->红灯->绿灯。 假设到达某路口时所用时间为ans。 当 K = 0时,代表通过一段路所耗时间, 用时直接加 T。 当 K = 1时,代表该路口在出发时为红灯,倒计时为T。 如果ans < T,说明从出发点到该路口,该路口的红绿灯一直为红灯。则直接将ans赋值为T。否则就记录当前路口所处状态 (ans - T) % (G + Y + R), 然后再判断是绿灯、黄灯还是红灯来记录通过的时间。

qq_45936312的博客 975

基于TI C2000的CCS安装与工程创建完整示例

手把手演示基于TI C2000系列的CCS安装过程及首个工程创建步骤,涵盖环境配置与常见问题处理,助力快速上手嵌入式开发,ccs安装和工程搭建不再难。

weixin_42476987的博客 969

CCF CSP刷题—小明放学

【题目描述】 依次放学的时候,小明已经规划好了自己的回家路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状态。请帮忙计算小明此次回家所需要的时间。 【输入格式】 输入的第一行包含空格分隔的三个正整数r,y,g,表示红绿灯的设置. 输入的第二行包含一个正整数n,表示小明总共经过的道路段数和路过的红绿灯数目。 接下来的n行,每行...

qq_36795903的博客 979

【实战】小红书笔记爬虫终极指南:模拟滑动加载,抓取图文(2026最新版)

小红书作为国内最大的生活方式分享社区,每天产生海量的图文笔记。对于数据分析、市场调研、竞品分析等需求,爬取小红书公开笔记成为一项常见任务。然而,小红书的反爬机制日益升级——接口加密、动态Token、滑动验证、设备指纹……本文将深入剖析小红书Web端和App端的爬取技术,手把手教你用Python实现模拟滑动加载、自动抓取图文笔记的完整爬虫系统。全文包含大量代码、原理分析和排坑经验,适合有一定爬虫基础的读者进阶学习。目录前言一、小红书反爬机制概览二、环境准备2.1 Python环境2.2 浏览器驱动。

2201_76125261的博客 766

从零实现深度学习框架——自动求导神器计算图

本文介绍自动求导神器——计算图,从本篇文章开始介绍一个自定义的求导工具。

日积月累,天道酬勤 4199

CSP认证201812-2小明放学

CSP认证201812-2小明放学 题目分析: ​ 该题一个坑是int型是存不下的,定义为long long 就可以了。 ​ 交通灯循环规律:红----&gt;绿----&gt;黄----&gt;红----&gt;绿----&gt;黄 ​ 1、定义一个数组a,a[1]表示红;a[2]表示黄等;a[3]表示绿灯。 ​ 2、if(bit == 0) sum += t; ​ 3、除了bit = 0时,...

qq_42007287的博客 1536

实干派!网易易盾增强版滑块验证码,全方位讲解识别思路(含源码)

该验证码是异形滑块验证码中的一种,缺口旋转+偏移的处理需要你有很好的图像处理知识,能很好的处理透明通道,同时,该验证码需要你能很好的处理缺口和背景之间匹配的关系,该验证码的处理难点就是两个缺口之间如何找到正确的,两个检测框都有很强的相似度,且加上背景图的干扰,在图像处理和有优化上难度大大增加。

码王吴彦祖的博客 2015

CCF CSP 201812-02 小明放学

CCF CSP 201812-02 小明放学 问题描述 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时...

qq_28640193的博客 474

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式如何计算IC电源管脚电感操作指导

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式可以计算电容到IC电源管脚的电感,用于评估电容位置对于IC电源管脚的效果,如何分析,以下图为例进行说明。Capacitors:选择层面,这里选择top layer(IC在top层),下方可以选择电容的size,这里选择All Size。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。模式如何计算IC电源管脚电感操作指导。

weixin_54787054的博客 409

uniapp H5刷新页面后返回按钮失效问题完美解决方案

这个问题其实很隐蔽,尤其是uniapp H5 场景下刷新导致栈清理,很多开发者一开始都懵掉了。uniapp 内部对「页面栈只有一个」时的返回逻辑是reLaunch;所以只要在这个分支里替换为自己的逻辑(比如),就能顺利实现预期。目前我在项目里已经跑通了,暂时没发现问题。不得不说,知道源码里这个逻辑后,真的是醍醐灌顶,只能膜拜框架大佬了 🤯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 524

CCF-CSP 201812-2 小明放学

CCF-CSP 201812-2 小明放学问题描述代码总结 问题描述 代码 #include<iostream> using namespace std; int main(){ int r,y,g; cin>>r>>y>>g; int totle; totle = r+y+g; int n; cin>>n; int a[n][2]; for(int i=0;i<n;i++){ for(int j=0;j&lt

SYSU_Zhiyuan 246

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

csp201812_2 小明放学 java

csp201812_2 小明放学 javacsp201812_2 小明放学 java csp201812_2 小明放学 java 红黄绿灯的状态是开始的时候记录的 一圈红绿灯所用时间 周期 = 红灯r+黄灯y+绿灯g 统计总时间 sum 那么每到达路口 最后一圈(红黄绿中的两种状态 或 一种状态)的时间 zhuihou= sum% 总时间 ; 如果最后的时间zhuihou减去 红绿灯剩余时间...

gbbbbbbbb的博客 247

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

CCF-CSP201812-2 小明放学

题目链接 问题描述: 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”...

悲伤无声地涌出来 7337

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CCF计算机软件能力认证201812-2小明放学(C语言版)

ccf-csp计算机软件能力认证201812-2小明放学(C语言版) 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。 问题描述   一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状

qq_46177519的博客 819

CSP 201812-2 小明放学 简单模拟※※WHY????

201812-2 小明放学 #include<iostream> using namespace std; int main() { long long r, y, g; cin >> r >> y >> g; long long n; cin >> n; long long time=0; long long sum= ...

CathyLea 249

【CSP试题回顾】201812-2-小明放学

CSP-201812-2-小明放学。

fzy2003的博客 1055

CCF CSP 201812-2 小明放学 解题思路及经验总结

更新:多谢weixin_44714465同学指出我的错误【详见49-52行代码,已改正!】。CCF CSP的OJ居然没有把这个错误检测出来,不顾为了追求严谨,我们还是应该及时改正! 题目描述 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景   ...

Superstarimage 4832

CCF-CSP-201812-2小明放学

目录 问题描述 问题分析: C++AC代码: 总结: 问题描述 试题编号: 201812-2 试题名称: 小明放学 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 题目背景   汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红...

www.helloworld.com 636

【CSP试题回顾】201812-2-小明放学(优化)

本题目涉及智慧城市项目中的一个实际应用:使用智慧交通系统预估小明放学回家的时间。通过分析小明经过的每个路段和红绿灯,代码计算总耗时。核心在于处理遇到红绿灯时的逻辑:根据红绿灯当前状态(红、黄、绿)和小明到达时刻,决定是否需要等待及等待时间。红灯时可能需要等待红灯结束或整个周期;黄灯时需等待黄灯和随后的红灯;绿灯则通常无需等待,除非接近周期末尾转换为黄灯或红灯。该逻辑通过对小明已经花费的时间进行模运算,与红绿灯周期时间相比较,来判定具体的等待时间。最终,累加这些时间,得到小明回家所需的总时间。

fzy2003的博客 1301
上一篇: CSP练习3:201812-01小明上学
下一篇: 2017北航题练习
coding_diamond
博客等级 码龄8年 8粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值