noi.ac-CSP模拟Day5T2 灯
算是一道思维题吧,没有什么算法在里面。
之前想的是,能走的话就尽量走远,走过去开灯然后再回去关灯,然后再走,每一段路要走3次。
然而,“能走的话就尽量走远”只是yy的一个贪心,没有任何依据。假设在中间找一个过渡点的话,路程应该是长这个样子的:
总路程还是3倍距离,没有改变诶。
所以只要你认认真真地,正正常常地走路,不绕圈圈,所走的路程都是3倍距离。
所以只需要判断能不能走到就可以了。
既然如此,那就可以随便开灯了(大雾)
(没有开玩笑啊)是真的可以随便开灯了,因为只是要判断能否走到,就用不着节约了。
从左走到右的时候,依次开灯,每次开灯之后要保证至少走到下一个点
回去的时候不用管
再一次从左走到右关灯,这一次走的时候依靠的是前面没有被关的灯光
前面延伸到左边最远的灯光要保证自己所在的位置有灯
#include<cstdio>
#include<cstring>
#include<iostream>
#include<string>
#include<queue>
#include<algorithm>
#include<vector>
#include<cstdlib>
using namespace std;
#define N 300005
#define ll long long
#define INF 0x3f3f3f3f
int n;
int p[N],r[N];
/*
从左走到右的时候,依次开灯,每次开灯之后要保证至少走到下一个点
回去的时候不用管
再一次从左走到右关灯,这一次走的时候依靠的是前面没有被关的灯光
前面延伸到左边最远的灯光要保证自己所在的位置有灯
*/
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d %d",&p[i],&r[i]);
int far=p[];//能够延伸到右边最远的灯光坐标 保证能够走到终点
for(int i=;i<=n;i++)
{
far=max(far,p[i-]+r[i-]);
if(far<p[i])
{
puts("-1");
return ;
}
}
far=p[n];//能够延伸到左边最远的灯光坐标 保证能够关灯
for(int i=n;i>=;i--)
{
far=min(far,p[i]-r[i]);
if(far>p[i-])
{
puts("-1");
return ;
}
}
printf("%lld\n",(p[n]-p[])*3ll);
return ;
}
Code
noi.ac-CSP模拟Day5T2 灯的更多相关文章
- NOI.AC NOIP模拟赛 第五场 游记
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
- NOI.AC NOIP模拟赛 第三场 补记
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...
- NOI.AC WC模拟赛
4C(容斥) http://noi.ac/contest/56/problem/25 同时交换一行或一列对答案显然没有影响,于是将行列均从大到小排序,每次处理限制相同的一段行列(呈一个L形). 问题变 ...
- [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...
- NOI.AC NOIP模拟赛R3解题报告
心路历程 预计得分:\(100+100+50=250\) 实际得分:\(10 +100 +50 = 160\) 三道原题,真好.T2做过,T1写了个错误思路,T3写了写50分状压dp. 整场考试实际在 ...
随机推荐
- HDU6736 2019CCPC秦皇岛赛区 F. Forest Program
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6736思路:dfs+栈 判环 设图中环的大小分别为 c1, c2, ..., ck,不属 ...
- 一例tornado框架下利用python panda对数据进行crud操作
get提交部分 <script> /* $("#postbtn").click(function () { $.ajax({ url:'/loaddata', data ...
- 手机端css实现active伪类
今天遇到手机端的css中a标签的active不起作用,原本想循环a标签,给当前的a标签添加class来解决,可觉得有点儿小麻烦,经查资料了解到解决此问题,只需要添加一个touchstart的空事件即可 ...
- IntelliJ IDEA常用快捷键总结
之前开发项目一直用的是eclipse进行开发,近期在使用IDEA这个工具进行项目开发,之前在eclipse上能使用的快捷键方法放在IDEA上很多都不适用了,因此在此总结一下关于IDEA快捷键的使用方法 ...
- CSS的五种基本选择器
要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器. ㈠什么是选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/co ...
- EasyUI-combotree 下拉树 数据回显时默认选中
组合树(combotree)把选择控件和下拉树结合起来.它与组合框(combobox)相似,不同的是把列表替换成树组件.组合树(combotree)支持带有用于多选的树状态复选框的树. 依赖 comb ...
- PDFtk:PDF文件处理
造冰箱的大熊猫@cnblogs 2018/9/12 使用PDFtk很多年了,今天得空把相关内容整理总结一下. 1.PDFtk能干什么 - 是否想把两个PDF文档合并到一起 - 是否想从PDF文档中摘出 ...
- 【POJ1011】Sticks
[题目概括] 现在有\(n\)个长度不超过\(50\)的木棍,请你把这些小木棍拼成若干根长度相同的木棍. 请你最小化拼成后的长度. [思路要点] 考虑枚举最后的长度,然后判断是否可以,这样就不需要最优 ...
- HDU 6667 Roundgod and Milk Tea
hdu题面 Time limit 6000 ms Memory limit 131072 kB OS Windows Source 2019 Multi-University Training Con ...
- Unity3D_(数据)LitJson创建和解析Json
LitJson github: 传送门 JsonUtility创建和解析Json 传送门 LitJson.dll百度云盘 传送门 密码:p1py 加载LitJson.dll到Unity中 在Asset ...