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

CSP-CCF★★★201812-2小明放学★★★

目录

一、问题描述

二、解答

(1)注意:

(2)80分版:

(3)100分版:

三、总结


一、问题描述

二、解答

(1)注意:

题目的n小于等于10的5次方,而时间t不超过10的6次方,那么回家的时间最大大概为n*t,即10的11次方,显然超过了int的范围(10的9次方)。所以在这里涉及到计算总时间的都要使用long long型。

(2)80分版:

思路:大情况:k==0和k!=0;

在k!=0中又分三种小情况:t>time;t==time;t<time;

在t<time中,通过累加直到count大于或等于time,利用flag作为下一个应该累加的数的标志,利用color来记录最后一个加上的灯的颜色。

分析:可能是写的太复杂了,显示运行超时

代码:

#include<iostream>
using namespace std;
int main()
{int r, y, g;cin >> r >> y >> g;int n;cin >> n;//红绿黄int k, t;long long time = 0;//k=1、2、3 时,分别表示出发时刻,//此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 tint flag = 0;long long count = 0;for (int i = 1; i <= n; i++){cin >> k >> t;count = t;if (k == 0) { time += t; }else if (k != 0){//int flag = k+1;//下一盏灯亮的标志int color = k;if (count > time) {if(color==2)//黄色{time += (count - time + r);}if(color==1)//红色{time += (count - time);}//绿色不需要等待}else if (count == time){if (color == 3)//绿色{time += (r + y);}if(color==2)//黄色{time += r;}}else if(count<time){if (color == 1)//红灯{flag = 3;//表示下一个亮的是绿灯,累加的下一个标志}else if (color == 2) { flag = 1; }else if (color == 3) { flag = 2; }while (count <time)//开始累加,按照红、绿、黄的顺序{if (flag == 1)//红灯{flag = 3;color = 1;count += r;}else if (flag == 2)//黄灯{flag = 1;color = 2;count += y;}else if (flag == 3)//绿灯{flag = 2;color = 3;count += g;}}if(count==time){if (color == 2)//黄{time += r;}else if (color == 3)//绿{time += (r + y);}}else if (count > time){if(color==1)//红{time += (count - time);}else if (color == 2)//黄{time += (count - time) + r;}}}}}cout << time;return 0;
}

(3)100分版:

重点:如图

代码:

#include<iostream>
using namespace std;
int main()
{int r, y, g;cin >> r >> y >> g;int n;cin >> n;int k, t;long long time = 0;//注意这里的时间要用long long类型long long count = 0;//亮灯顺序:红绿黄//k=1、2、3 时,分别表示出发时刻,//此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 tfor (int i = 1; i <= n; i++){cin >> k >> t;if (k == 0) { time += t; }else {if (k == 1) {if (time < t) { time += (t - time); }else if (time == t) { time += 0; }else if(time>t){//绿黄红count = (time - t) % (r + y + g);if (count >= 0 && count < g){}else if (count >= g && count < (g + y)){time += (g + y - count + r);}else if (count >= (g + y) && count < (g + y + r)){time += (g + y + r - count);}}}if (k == 2) {//红绿黄if (time < t) { time += (t - time+r); }else if (time == t) { time += r; }else if (time > t){count = (time - t) % (r + y + g);if (count >= 0 && count < r){time += (r - count);}else if (count >= r && count < (r + g)){}else if (count >= (r + g) && count < (r + g + y)){time += (r + g + y - count + r);}}}if (k == 3) {//黄红绿if (time < t) { time += 0; }else if (time == t) { time += r+y; }else if (time > t) {count = (time - t) % (r + y + g);if (count >= 0 && count < y){time += (y - count + r);}else if (count >= y && count < (r + y)){time += (r + y - count);}else if (count >= (r + y) && count < (r + g + y)){}}}}}cout << time;return 0;
}

三、总结

(1)如果数的规模很大时,估算一下,看有没有超过10的9次方,超过的话就要用long long。

(2)题目中有循环往复的情况,可以考虑取余、用周期。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】
  • ABAP JSON处理应用
  • CKAD-CronJob
  • 伟易特发布全新一代便携式反无人机装备
  • Vue组件:动态组件、缓存组件、异步组件
  • CentOs7 解决yum更新源报错:[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。
  • 微信小程序登录与获取手机号 (Python)
  • 计算机毕业设计Spark+PyTorch知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计
  • opencv学习:信用卡卡号识别
  • 别总是“系统错误,请稍后重试!”了,解决问题要彻底!
  • 铲屎官都该知道的除浮毛神器——希喂、美的、352宠物空气净化器
  • Python VTK 绘制等高线初步
  • image.size()和image.shape包含的信息一样,那image.size()存在的意义是什么?
  • 2024.9.9(极客大挑战 2019]EasySQL,[极客大挑战 2019]Knife)
  • 什么是3PL EDI 集成?优化供应链指南
  • 分享一款快速APP功能测试工具
  • 【刷算法】从上往下打印二叉树
  • CentOS从零开始部署Nodejs项目
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • input的行数自动增减
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Lucene解析 - 基本概念
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 机器学习学习笔记一
  • 简单基于spring的redis配置(单机和集群模式)
  • 前端
  • 入口文件开始,分析Vue源码实现
  • 我的业余项目总结
  • 无服务器化是企业 IT 架构的未来吗?
  • 用Python写一份独特的元宵节祝福
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 阿里云API、SDK和CLI应用实践方案
  • 阿里云移动端播放器高级功能介绍
  • 交换综合实验一
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #if 1...#endif
  • #NOIP 2014#Day.2 T3 解方程
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Java入门)学生管理系统
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (区间dp) (经典例题) 石子合并
  • (算法)区间调度问题
  • (转)可以带来幸福的一本书
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET CLR Hosting 简介
  • .net core 的缓存方案
  • .NET Framework杂记
  • .NET 分布式技术比较