洛谷 P5269 欧稳欧再次学车 题解
P5269 欧稳欧再次学车
题目背景
请自行脑补一张欧稳欧学车的图
题目描述
欧稳欧学车时经常用一辆橡树车练习。这辆橡树车共有 \(N\) 个挡位,欧稳欧每秒可以把挡位增加或减少 \(1\),初始时(\(0\) 时刻)挡位为 $ 1$。
这辆车的转速范围是 \([L,R]\),初始时转速为 $ L$。每次升挡时,转速会变成 \(L\);降挡时,会变成 \(R\)。欧稳欧在每秒也可以踩油门,让转速增加 \(X\),再对 \(R\) 取 \(\text{min}\)。如果转速连续 \(K\) 秒都 \(=R\),那么这辆车的发动机会停止工作,在这 \(K\) 秒结束的一瞬间停下(即使 \(K\) 秒中经历了降档操作,仍然算这种情况)。
这些操作我们认为都是在每秒开头的一瞬间进行的,其中换挡操作比踩油门操作先进行。而这一秒内这辆车前进的距离是 转速\(\times\)挡位。
现在给出欧稳欧练习时的操作序列,你需要求出他一共前进的距离是多少。
输入格式
第一行六个整数 \(T,N,L,R,X,K\),\(T\) 表示总时间。
接下来 \(T\) 行,每行两个整数 \(x,y\),表示这一秒的操作。
其中 \(x=0\) 表示升挡,\(x=1\) 表示降挡,\(x=2\) 表示挡位不变;\(y=0\) 表示不踩油门,\(y=1\) 表示踩油门。(不要问为什么没有刹车)
输出格式
一行一个整数,表示给定操作序列的前进距离。
如果欧稳欧在挡位为 \(N\) 时升挡,或在挡位为 \(1\) 时降挡,那么给定序列不合法,输出 \(-1\)。
输入输出样例
输入 #1
5 3 1 10 5 100
0 1
0 0
2 1
2 1
1 1
输出 #1
83
输入 #2
3 1 1 1 1 2
2 0
2 1
2 0
输出 #2
2
输入 #3
1 2 3 4 5 6
1 0
输出 #3
-1
说明/提示
对于样例一:
第一秒挡位为 \(2\),转速为 \(6\);
第二秒挡位为 \(3\),转速为 \(1\);
第三秒挡位为 \(3\),转速为 \(6\);
第四秒挡位为 \(3\),转速为 \(10\);
第五秒挡位为 \(2\),转速为 \(10\)。
对于样例二,前进两秒之后发动机就停止了工作。
对于 \(30\%\) 的数据,没有挡位操作(即保证 \(x=2\));
对于另外 \(30\%\) 的数据,没有踩油门操作(即保证 \(y=0\));
对于全部数据,保证 \(1\le T,N,L,R,X,K\le 10^6,L\le R\)。
【思路】
模拟
【说在前面的话】
其实很简单的我想复杂了
所以看了很久的题目,担心写出锅
主要原因还是因为这道题是gyh大佬给我推荐的
大佬推荐的当然简单不了啦
不过没想到gyh这么体贴我这个蒟蒻
找适合我这个水平的题目来给我做
开心qwq
(为什么不开long long 只有10分,这不对)
【题目分析】
关于档位有三个操作,关于速度有两个操作
升档,降档,不动和加速,不加速
根据给出的数据来模拟就好了
【核心思路】
根据提议来模拟就好了
先判断是升档,降档还是不动
如果是升档那就让档位增加,速度变为l
如果是降档那就让档位减少,速度变为r
如果是不动那就是不用管了
在判断是加速还是不加速
加速那就用现在速度加上x之后和r取min
不加速就不用管
还有会不会抛锚这也是一个问题
只需要开一个变量储存已经在r速度上面持续了多久
如果这个时候速度是r那就变量++
不然就要变为0
【完整代码】
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
int read()
{
int sum = 0,fg = 1;
char c = getchar();
while(c < '0' || c > '9')
{
if(c == '-')fg = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
sum = sum * 10 + c - '0';
c = getchar();
}
return sum * fg;
}
signed main()
{
int ans = 0;
int t = read(),n = read(),l = read(),r = read(),x = read(),k = read();
int dang = 1,zhuan = l;
int last = 0;
for(register int i = 1;i <= t;++ i)
{
int opt = read(),y = read();
if(opt == 0)//升档
{
if(dang == n)
{
cout << -1 << endl;
return 0;
}
dang ++;
zhuan = l;//先升档
//如果不踩油门,那就只处理升档,如果踩油门那就加速
if(y == 1)
zhuan = min(r,zhuan + x);
}
else
if(opt == 1)//降档
{
if(dang == 1)
{
cout << -1 << endl;
return 0;
}
dang --;
zhuan = r;
if(y == 1)
zhuan = min(r,zhuan + x);
}
else//档位不变
{
if(y == 1)
zhuan = min(r,zhuan + x);
}
ans += zhuan * dang;
if(zhuan == r)
last ++;
else
last = 0;
if(last == k)
break;
}
cout << ans << endl;
return 0;
}
/*
6 3 1 10 5 100
0 1
0 0
2 1
2 1
1 1
1 0
*/
洛谷 P5269 欧稳欧再次学车 题解的更多相关文章
- 【洛谷P3369】【模板】普通平衡树题解
[洛谷P3369][模板]普通平衡树题解 题目链接 题意: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3 ...
- 洛谷 P1992 不想兜圈的老爷爷 题解
洛谷 P1992 不想兜圈的老爷爷 题解 题目描述 一位年过古稀的老爷爷在乡间行走 而他不想兜圈子 因为那会使他昏沉 偶然路过小A发扬助人为乐优良传统 带上地图 想知道路况是否一定使他清醒 usqwe ...
- BZOJ5285 & 洛谷4424 & UOJ384:[HNOI/AHOI2018]寻宝游戏——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5285 https://www.luogu.org/problemnew/show/P4424 ht ...
- 洛谷p3384【模板】树链剖分题解
洛谷p3384 [模板]树链剖分错误记录 首先感谢\(lfd\)在课上调了出来\(Orz\) \(1\).以后少写全局变量 \(2\).线段树递归的时候最好把左右区间一起传 \(3\).写\(dfs\ ...
- 洛谷 P1789 【Mc生存】插火把 题解
P1789 [Mc生存]插火把 题目背景 初一党应该都知道...... 题目描述 话说有一天 linyorson 在"我的世界"开了一个 \(n\times n(n\le 100) ...
- 洛谷P5269 欧稳欧再次学车
正常模拟就好~ 首先初始化:转速=l, 档位=1 然后读入数据 由于先要处理换挡操作,所以我们先按照x处理,再按照y处理 当x=0时,档位+1,转速=l 当x=1时,档位-1,转速=r 当y=1时,转 ...
- 题解 洛谷P5259【欧稳欧再次学车】
实际上没什么可说的,暴力大模拟就好. 一定要开long long! 一定要开long long! 一定要开long long! (不然会炸数据的!!!) //Stand up for the fait ...
- $P5269 欧稳欧再次学车$
\(problem\) 哇 看各位巨佬都来发\(T1\)的题解 我也来发一篇.(别的题目不会别瞎bb) 题目大意就是 \(T\) 秒 能走多少路程 第一行六个整数 \(T,N,L,R,X,K\) 接下 ...
- 【洛谷】【扩欧】P1516 青蛙的约会
[题目描述] 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有 ...
随机推荐
- 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询
mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件+count 需求: ======================================= ...
- NuGet包 安装相关指令
一.安装 1.安装指定版本类库install-package <程序包名> -version <版本号> 2.安装到指定的项目install-package <程序包名& ...
- .net core使用ocelot---第二篇 身份验证
简介原文链接 .net core使用ocelot---第一篇 简单使用 接上文,我将继续介绍使用asp.net core 创建API网关,主要介绍身份验证(authentication )相 ...
- 分布式系统根基:物理时钟和Lamport逻辑时钟
分布式系统解决了传统单体架构的单点问题和性能容量问题,另一方面也带来了很多的问题,其中一个问题就是多节点的时间同步问题:不同机器上的物理时钟难以同步,导致无法区分在分布式系统中多个节点的事件时序.19 ...
- 对比度增强(二):直方图正规划与伽马变换 cv.normal()函数使用及原理
直方图正规化: 图像为I,宽为W,高为H,I(r,c)代表I的第r行第c列的灰度值:输出图像记为O,为使得输出图像的灰度值在[Omin,Omax]范围里,可用如下公式: ...
- 2019 263云通信java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.263云通信等公司offer,岗位是Java后端开发,因为发展原因最终选择去了263云通信,入职一年时间了,也 ...
- excel 宏循环行数据 ,Excel统计所有sheet数据行数 VBA
Sub fun1() '统计每一个sheet有多少行数据 Set s1 = Sheets("Sheet1") 'totalok = 0 To Sheets.Count s1.Cel ...
- element-ui文件上传 做类型大小的限制
上代码: <div class="filebox"> <el-upload class="upload-demo" :action=" ...
- XML简述
XML简述 本文主要内容都是在中国大学MOOC上学习的,这里做个记录. 课程:Java核心技术(进阶),华东师范大学 陈良育老师 感谢陈良育老师,在他的慕课上受益匪浅. XML基本概念 XML(eXt ...
- BBS之文章详情页搭建
博客评论相关 博客文章详情页搭建 {% extends 'base.html' %} {% block css %} <style> #div_digg { float: right; m ...