当前位置: 首页 > news >正文

第15次CCF CSP真题解

1、小明上学

题目链接:https://sim.csp.thusaac.com/contest/15/problem/0

本题是模拟红绿灯计时的题,根据红绿灯转换规则可知,红灯后面通常是绿灯,绿灯后面是黄灯,黄灯过后又是红灯。根据题意,当k = 0时,表示小明经过一段道路,此时进行计时操作;当k = 1时,表示小明看到了一个红灯,此时进行计时操作;当k = 2时,表示小明看到了一个黄灯,此时计时操作包括黄灯和红灯的计时;当k = 3时,表示小明看到了一个绿灯,此时可以直接通过,不用进行计时操作。

100分代码:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{int r,y,g;cin >> r >> y >> g; int n;cin >> n;int k[110],t[110];for(int i = 0; i < n; i++){cin >> k[i] >> t[i];}int sum = 0;for(int i = 0; i < n; i++){if(k[i] == 0 || k[i] == 1)sum += t[i];else if(k[i] == 2)sum += t[i] + r;}cout << sum << endl;return 0;
}

评测结果:

2、小明放学

题目链接:https://sim.csp.thusaac.com/contest/15/problem/1

本题难度比第一题增加了不少,小明在放学时已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。当经过一段道路时,进行计时操作即可。当经过红绿灯时,需要考虑红绿灯转换的周期问题,红灯、黄灯和绿灯都亮过后算一个周期,具体的周期转换情况如下图所示:

情况1
tgyrgyrgyrgy
5303303033030330303
绿绿绿绿
等待通过等待等待通过等待等待通过等待等待通过等待
情况2
trgyrgyrgyrg
23030330303303033030
绿绿绿绿
等待等待通过等待等待通过等待等待通过等待等待通过
情况3
tyrgyrgyrgyr
10330303303033030330
绿绿绿绿
通过等待等待通过等待等待通过等待等待通过等待等待

对于红绿灯周期转换过程中的计时问题,可以运用求模运算解决。

如果不会正解的话,可以根据测试点拿分,前 2 个测试点中不存在任何信号灯,所以只需在经过每一段道路时进行计时操作即可,轻轻松松20分就到手了。

20分代码:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{int r,y,g;cin >> r >> y >> g;int n;cin >> n;int k,t;long long sum = 0;for(int i = 1; i <= n; i++){cin >> k >> t;sum += t;	}cout << sum << endl; return 0;
}

评测结果:

100分代码:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{int r,y,g;cin >> r >> y >> g;int n;cin >> n;int k,t;long long sum = 0;for(int i = 1; i <= n; i++){cin >> k >> t;if(k == 0)sum += t;	else if(k == 1){if(sum < t + g + y){if(sum % (t + g + y) < t)sum += t - sum % (t + g + y);else if(sum % (t + g + y) >= t && sum % (t + g + y) < t + g)sum += 0;else if(sum % (t + g + y) >= t + g && sum % (t + g + y) < t + g + y)sum += t + g + y + r - sum % (t + g + y);	}else if(sum >= t + g + y){if((sum - (t + g + y)) % (r + g + y) < r)sum += r - (sum - (t + g + y)) % (r + g + y);else if((sum - (t + g + y)) % (r + g + y) >= r && (sum - (t + g + y)) % (r + g + y) < r + g)sum += 0;else if((sum - (t + g + y)) % (r + g + y) >= r + g && (sum - (t + g + y)) % (r + g + y) < r + g + y)sum += r + g + y + r - (sum - (t + g + y)) % (r + g + y);	}}else if(k == 2){if(sum < t + r + g){if(sum % (t + r + g) < t)sum += t + r - sum;else if(sum % (t + r + g) >= t && sum % (t + r + g) < t + r)sum += t + r - sum % (t + r + g);	else if(sum % (t + r + g) >= t + r && sum % (t + r + g) < t + r + g)sum += 0;	}else if(sum >= t + r + g){if((sum - (t + r + g)) % (y + r + g) < y + r)sum += y + r - (sum - (t + r + g)) % (y + r + g);else if((sum - (t + r + g)) % (y + r + g) >= y + r && (sum - (t + r + g)) % (y + r + g) < y + r + g)sum += 0;	}}else if(k == 3){if(sum < t + y + r){if(sum % (t + y + r) < t)sum += 0;else if(sum % (t + y + r) >= t && sum % (t + y + r) < t + y + r)sum += t + y + r - sum % (t + y + r);	}else if(sum >= t + y + r){if((sum - (t + y + r)) % (g + y + r) < g)sum += 0;else if((sum - (t + y + r)) % (g + y + r) >= g && (sum - (t + y + r)) % (g + y + r) < g + y + r)sum += g + y + r - (sum - (t + y + r)) % (g + y + r);	}}}cout << sum << endl; return 0;
}

评测结果:

http://www.lryc.cn/news/470696.html

相关文章:

  • STM32硬件平台
  • 一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)
  • 【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践
  • 时间序列预测(九)——门控循环单元网络(GRU)
  • 李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注
  • Android13、14特殊权限-应用安装权限适配
  • DMVPN协议
  • leetcode动态规划(十八)-零钱兑换II
  • 2024 CSP-J 题解
  • GPU 服务器厂家:中国加速计算服务器市场的前瞻洞察
  • Hadoop集群修改yarn队列
  • 【GPIO】2.ADC配置错误,还是能得到电压数据
  • css-元素居中方式
  • redis内存打满了怎么办?
  • 决策算法的技术分析
  • 【Python爬虫】获取汽车之家车型配置附代码(2024.10)
  • JVM 加载 class 文件的原理机制
  • NumPy学习第九课:字符串相关函数
  • 卷积神经网络(CNNs)在处理光谱特征的序列属性时表现不佳
  • 【IC】MCU的Tick和晶振频率
  • 从0到1学习node.js(npm)
  • 【STM32 Blue Pill编程实例】-OLED显示DS18B20传感器数据
  • STM32 从0开始系统学习3 启动流程
  • 交换机:端口安全与访问控制指南
  • 【C++ | 数据结构】八大常用排序算法详解
  • Oracle 第7章:数据完整性约束
  • 【核心】静态/动态全覆盖路径规划相关技术研究
  • Java 实现集成 Google 邮箱第三方登录实践
  • 人人都在学的智能体(AI Agent),带你轻松入门!
  • 如何在Windows环境下开启Kibana的非localhost访问