文明距离(civil)

题目描述

你被一个一向箔打中了,现在你掉到了一个一维空间中,也就是一个数轴上。

在这个数轴上,每秒会在一段连续的区间上出现“文明”。而你在每一秒开始的时候,可以花费x的代价移动x的距离,其中x是任意非负实数。当你移动结束以后,若你离“文明”的距离为y,你就需要花费y的代价使用“大眼睛”来观测这个文明,不然你就要被黑暗森林攻击了。此处距离是指你到这段区间中任意一点的距离的最小值。

现在,你收到了一系列信息,表明每秒的文明出现位置以及你的初始位置,请你最小化你的代价来完成任务。

输入格式

第一行两个正整数n,x,分别表示总秒数以及你的初始位置。

接下来n行,第i+1行有两个正整数li,ri,表示第i秒的时候的文明出现的位置。

输出格式

输出一行,表示最小代价。

样例

样例输入

5 4
2 7
9 16
8 10
9 17
1 6

样例输出

8

数据范围与提示

对于20%的数据,n<=10,x,li,ri<=10;

对于50%的数据,n<=2000,x,li,ri<=10^9;

对于100%的数据,n<=5*10^5,x,li,ri<=10^9。


solution

orzxjq!!!!!
3分钟屠出我永远也做不出的题。
我们假设我们现在的最优取值区间[l,r]
 新来的一段区间为[a,b]
如果abcd有交集,那么下一步的最优解区间就是交集。
否则下一步的最优解区间是两个区间中间的那一段。
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 500005
using namespace std;
int n,x,l[maxn],r[maxn];
long long ans;
int main()
{
cin>>n>>x;
int nl=x,nr=x;
for(int i=;i<=n;i++){
scanf("%d%d",&l[i],&r[i]);
if(nr<l[i]){
ans+=l[i]-nr;
nl=nr;nr=l[i];
}
else if(nl>r[i]){
ans+=nl-r[i];
nr=nl;nl=r[i];
}
else {
nl=max(nl,l[i]);nr=min(nr,r[i]);
}
}
cout<<ans<<endl;
return ;
}

最新文章

  1. 一个基于Orchard的开源CRM --coevery简介
  2. JS中同名函数有效执行顺序
  3. JS JQuery初始化
  4. LightOJ1086 Jogging Trails(欧拉回路+中国邮递员问题+SPFA)
  5. Android核心分析之十七电话系统之rilD
  6. java中正则表达式
  7. codevs 1078 最小生成树
  8. 面向对象_03【关键字:final使用】
  9. 解决Git Revert操作后再次Merge代码被冲掉的问题
  10. SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
  11. linux之cp和scp的使用
  12. elasticsearch技术解析与实战(一) 入门和索引
  13. 记录 第一次体验安装python第三方库的全过程
  14. 同志亦凡人第一季/全集BQueer As Folk 1迅雷下载
  15. 【剑道】步法(Ashi Sabaki)
  16. asp.net导出EXCEL的好方法!(好用,导出全部数据)
  17. yii 第一步
  18. 将windows共享文件夹挂载在linux机器的/mnt/windows/ 目录下进行访问
  19. C++ 判断当前系统x64 or x86
  20. Git-标签管理【转】

热门文章

  1. C#进阶学习笔记(个人整理)
  2. 基于Xtrabackup恢复单个innodb表
  3. 8-2 开发接口 (入参是json格式)
  4. php-5.6.26源代码 - PHP文件汇编成opcode(require、include的差异)
  5. Linux编译移植Qt4的环境_在OMAPL138平台
  6. [CodeChef]RIN(最小割)
  7. Android开发——事件分发机制详解
  8. Javascript Step by Step - 04
  9. Android stadio butternife工具
  10. echart图表展示数据-简单的柱状图