【CSP CCF记录】201812-2第15次认证 小明放学

devtools/2024/11/25 13:03:45/

题目

样例1输入

30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3

样例1输出

30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3

 

思路

参考:CCF小白刷题之路---201812-2 小明放学(C/C++ 100分)_小明放学测试数据-CSDN博客

我们使用一个for循环计算小明通过每段路/每个路灯所需时间。每轮我们需要完成以下几件事:

1. k=0,没有灯直接通过。

2. k=1,2,3,有交通灯,我们需要推测出小明到达时该灯是什么颜色,继而计算出小明在该灯处需要等多久。设小明还有tmp时间到达该灯。

  • 小明在到达该灯前,该灯可能已经经历了“红->绿->黄”几轮变化,使用%取余,使tmp限定在最新的周期。
  • 若tmp>=t(tmp>t),说明小明到达该灯前,该灯的颜色还会变换,因此需要不断tmp-t,相当于小明不断前进,交通灯颜色不断改变。
  • 若tmp<t(tmp<t),说明小明到达该灯前,该灯的颜色已经不会改变了。t-tmp为小明到达该灯时,该灯的持续时间,这时就可以根据灯的颜色分情况讨论。

其他注意点:假设n和r,y,g都是最大取值,这里预计用时就需要采用long long数据类型。

代码

注释还是很详细的。。。

#include<bits/stdc++.h>
using namespace std;
int r,y,g,n;
int main()
{cin>>r>>y>>g;cin>>n;long long ptime=0;//预计用时 for(int i=0;i<n;i++){int k,t;cin>>k>>t;int light=k;//标记计算过程中的交通灯颜色 if(light==0)//直通 {ptime+=t;//cout<<"ptime:"<<ptime<<endl;continue;} long long tmp=ptime%(r+y+g);//在最新一轮交通灯变换中,小明还有tmp时间到达该路口 //在t时间内交通灯颜色不会变化,tmp>=t说明小明到达路口前交通灯颜色还会变化。//倒推小明到达路口时交通灯的颜色 while(tmp>=t){  tmp=tmp-t; if(light==1)//当前是红灯 {t=g;light=3;//红灯->绿灯 }else if(light==2)//当前是黄灯 {t=r;light=1;//黄灯->红灯 }else if(light==3)//当前是绿灯 {t=y;light=2;//绿灯->黄灯 }}//这时tmp<t,说明小明到达路口前交通灯颜色不会再变了,可以讨论小明在路口要等多久 t=t-tmp;if(light==1)//红灯 {ptime+=t;//cout<<"ptime:"<<ptime<<endl;}else if(light==2)//黄灯 {ptime+=(t+r);//等完黄灯后还要再等红灯 //cout<<"ptime:"<<ptime<<endl;}//绿灯无需等待直接通过 }cout<<ptime;return 0;
}

运行结果


http://www.ppmy.cn/devtools/136842.html

相关文章

安装支持ssl的harbor 2.1.4 docker 19.03.8 docker-compose 1.24.0

版本&#xff1a; docker 19.03.8 docker-compose 1.24.0 harbor: harbor-offline-installer-v2.1.4.tgz 1、先在/root下生成证书 #生成ca根证书 openssl genrsa -out ca.key 4096#创建ca证书 openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/CCN/STShenzh…

Android 网络通信(三)OkHttp实现登入

学习笔记 目录 一. 先写XML布局 二、创建 LoginResponse 类 :封装响应数据 目的和作用: 三、创建 MyOkHttp 类 :发送异步请求 代码分析 可能改进的地方 总结 四、LoginActivity 类中实现登录功能 详细分析与注释: 总结: 改进建议: 零、响应数据样例 通过 P…

TCP socket api详解

文章目录 netstat -nltpaccept简单客户端工具 telnet 指定服务连接connect异常处理version 1 单进程版version 2 多进程版version 3 -- 多线程版本version 4 ---- 线程池版本 应用-简单的翻译系统服务器细节write 返回值 客户端守护进程化前台和后台进程的原理 创建套接字socke…

Go语言中的defer关键字:资源管理与延迟执行的艺术

Go语言中的defer关键字:资源管理与延迟执行的艺术 在Go语言的编程世界中,defer关键字以其独特的功能和优雅的处理方式,成为了资源管理和错误处理的利器。本文将深入探讨defer的工作原理,探究其背后的机制,并通过丰富的案例来展示它的实际应用。 defer机制简介 defer是G…

Pytorch使用手册-Datasets DataLoaders(专题三)

数据集与数据加载器(Datasets & DataLoaders) 在 PyTorch 中,torch.utils.data.Dataset 和 torch.utils.data.DataLoader 是数据处理的两种核心工具。它们通过模块化的方式,将数据加载与模型训练分离,提高代码的可读性和可维护性。 1. 加载数据集 以 Fashion-MNIST …

利用浏览器录屏

以下内容参考自网络 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <div class"left"> <di…

监控报警系统的指标、规则与执行闭环

随笔 从千万粉丝“何同学”抄袭开源项目说起&#xff0c;为何纯技术死路一条&#xff1f; 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 java 老矣&#xff0c;尚能饭否&#xff1f; 一骑红尘妃子笑&#xff0c;无人知是荔枝来! 有所依 我们如何知道系统交易…

空间注意力网络的性能优化与多维评估

在本文中&#xff0c;首先分析空间注意力网络&#xff08;Spatial Attention Neural Network&#xff09;在五个不同数据集上的训练结果。这些数据集包括Daily_and_Sports_Activities、WISDM、UCI-HAR、PAMAP2和OPPORTUNITY。通过对比这些结果&#xff0c;我们可以深入理解空间…