算是一道思维题吧,没有什么算法在里面。

之前想的是,能走的话就尽量走远,走过去开灯然后再回去关灯,然后再走,每一段路要走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 灯的更多相关文章

  1. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  2. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  3. NOI.AC NOIP模拟赛 第二场 补记

    NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...

  4. NOI.AC NOIP模拟赛 第一场 补记

    NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...

  5. NOI.AC NOIP模拟赛 第四场 补记

    NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...

  6. NOI.AC NOIP模拟赛 第三场 补记

    NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...

  7. NOI.AC WC模拟赛

    4C(容斥) http://noi.ac/contest/56/problem/25 同时交换一行或一列对答案显然没有影响,于是将行列均从大到小排序,每次处理限制相同的一段行列(呈一个L形). 问题变 ...

  8. [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)

    题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...

  9. NOI.AC NOIP模拟赛R3解题报告

    心路历程 预计得分:\(100+100+50=250\) 实际得分:\(10 +100 +50 = 160\) 三道原题,真好.T2做过,T1写了个错误思路,T3写了写50分状压dp. 整场考试实际在 ...

随机推荐

  1. grunt-contrib-jshint js代码检查

    grunt-contrib-jshint:用于javascript代码检查(并会给出建议),发布js代码前执行jshint任务, 可以避免出现一些低级语法问题jshint拥有非常丰富的配置,可以自由控 ...

  2. qt5--自定义控件封装

    视频教程地址:https://www.bilibili.com/video/av51766541/?p=30

  3. 如何配置IIS使其支持APK/WGT文件的下载

    1.打开Internet 信息服务(IIS)管理器: 2.选择需要配置的网站: 3.右侧功能界面双击进入“MIME类型”: 4.点击右侧“添加”按钮,在弹出窗口里文件扩展名输入:apk,MIME类型输 ...

  4. 对vue-router的研究--------------引用

    pushState/replaceState/popstate 解析 HTML5提供了对history栈中内容的操作.通过history.pushState/replaceState实现添加地址到hi ...

  5. linux运维、架构之路-MongoDB单机部署

    一.MongoDB介绍 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系型数据库和非关系 ...

  6. 有时间看看这个方法 会不会 避免 xss

    Server.HtmlEncode  能将字符串原样输出 包括html标签

  7. TTTTTTTTTTTTTT poj 1127 Jack Straws 线段相交+并查集

    题意: 有n个木棍,给出木棍的两个端点的x,y坐标,判断其中某两个线段是否连通(可通过其他线段连通) #include <iostream> #include <cstdio> ...

  8. kali VMWOOLS的安装

    别人的教程 https://jingyan.baidu.com/article/3ea51489992f1f52e71bba45.html

  9. 分布式-信息方式-ActiveMQ支持的传输协议和配置

                             ActiveMQ支持的传输协议和配置■ Connector: ActiveMQ提供的,用来实现连接通讯的功能.包括: client-to-broker ...

  10. 如何使用git工具

    首先需要下载安坐git工具 地址如下:https://git-scm.com/downloads 安装完毕之后,就可以进入提供的命令行窗口 然后就可以使用了,比如:想从 github 克隆项目下来 g ...