题目

描述

题目大意

在一个数轴上,有些人要从某个点到达另一个点。

出租车从最左端出发,将所有人送到它们的目的地,最终到达最右边的点。

出租车只能做一个乘客,并且可以在图中将乘客丢下。

问最短时间。


思考历程

一看就觉得是神仙题,

往DP方向思考,没有一点点长进……

压根就没有想过贪心……

然而这题又没得打暴力,于是一分都没有拿。


正解

面对这种神仙题,为什么我没有想到贪心……

首先将有用功加入答案中。

出租车走过的路径一定连在一起的,如果我们添加一条从MMM到000的路径,就能保证它最终能到达MMM点。这样路径就构成了一个环。

可以通过各个点将数轴分成很多段,每一段上有一些往左走的路,有一些往右走的路。

大多时候这些向左走和向右走的路径条数是不一样的,但我们求的是环(欧拉回路)。

于是我们相减,取绝对值,强制添加路径。

这样搞出来之后可能不会连通,但由于有条从MMM到000的路径,如果不连通,一定可以有种花费同样代价的方式使得它们串成一个欧拉回路。所以直接添加就好。

那么我们差分处理一下就搞定了。

然后还有一种神奇的方法。

同样要加上MMM到000的路径。

首先将有用功加入答案中,然后的具体做法比较神奇:将起点和终点分别排序,下标相同的坐标相减取绝对值,加入答案中。

然后就没了。

这是什么神仙做法?

根据我的理解,这也是搞出欧拉回路,然后贪心地将起点和终点配对,即连在一起。

配对的时候排序,然后两两配,这样是最小的。我自己想了一个不完整的证明:假设有a1≤a2a_1\leq a_2a1​≤a2​和b1≤b2b_1\leq b_2b1​≤b2​,可以证明∣a1−b1∣+∣a2−b2∣≤∣a1−b2∣+∣a2−b1∣|a_1-b_1|+|a_2-b_2|\leq |a_1-b_2|+|a_2-b_1|∣a1​−b1​∣+∣a2​−b2​∣≤∣a1​−b2​∣+∣a2​−b1​∣。在数轴上分类讨论就可以证明了。

仔细想想,我发现这似乎已经无视了可以把乘客中途扔下车的操作(除了将几个欧拉回路连在一块之外)!

路径分成了很多段,如果拆开来这样做,就相当于可以中途将乘客赶下车,这样一定是没有问题的。这几段中,中间的每个交点既是起点,又是终点,它们自己和自己配对,不会优于与真正的起点终点配对。

这个东西感性理解一下吧……不会证明。


代码

using namespace std;
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100010
int n,end;
struct Op{
int x,ty;
} o[N*2];
int m;
inline bool cmp(const Op &a,const Op &b){
return a.x<b.x;
}
long long ans;
int main(){
scanf("%d%d",&n,&end);
o[++m]={end,-1};
o[++m]={0,1};
for (int i=1;i<=n;++i){
int x,y;
scanf("%d%d",&x,&y);
ans+=abs(x-y);
o[++m]={x,-1};
o[++m]={y,1};
}
sort(o+1,o+m+1,cmp);
for (int i=2,j=o[1].ty;i<=m;++i){
ans+=1ll*(o[i].x-o[i-1].x)*abs(j);
j+=o[i].ty;
}
printf("%lld\n",ans);
return 0;
}

[JZOJ3187]【GDOI2013模拟8】的士的更多相关文章

  1. 【NOIP模拟】的士碰撞(二分答案)

    Description

  2. jzoj3156. 【GDOI2013模拟1】病毒传播

    题意: 村庄里有m个人,初始有一些人感染了病毒.如果第i个人的编号i满足,有一对(a,b)(a是初始病毒感染者编号,b为前一天的感染者编号)使\(a*b mod m =i\),则第i个人会感染病毒.每 ...

  3. 【GDOI2013模拟4】贴瓷砖

    题目 A镇的主街是由N个小写字母构成,镇长准备在上面贴瓷砖,瓷砖一共有M种,第i种上面有Li个小写字母,瓷砖不能旋转也不能被分割开来,瓷砖只能贴在跟它身上的字母完全一样的地方,允许瓷砖重叠,并且同一种 ...

  4. [JZOJ3168] 【GDOI2013模拟3】踢足球

    题目 描述 题目大意 有两个队伍,每个队伍各nnn人. 接到球的某个人会再下一刻随机地传给自己人.敌人和射门,射门有概率会中. 每次射门之后球权在对方111号选手. 某个队伍到了RRR分,或者总时间到 ...

  5. [JZOJ3167] 【GDOI2013模拟3】查税

    题目 描述 题目大意 维护一个有一次函数组成的序列 具体来说,对于位置xxx,现在的值为sx+zx∗(T−tx)s_x+z_x*(T-t_x)sx​+zx​∗(T−tx​) 有两个操作,修改某个位置上 ...

  6. [JZOJ3171] 【GDOI2013模拟4】重心

    题目 描述 题目大意 有一堆长为222的矩形,最下面的右端点横坐标为000. 每个矩形都有其固定的质量. 将这些矩形堆在一起,使得最右边的横坐标最大,并且满足它不会塌掉(满足物理学). 思考历程 首先 ...

  7. [JZOJ3177] 【GDOI2013模拟5】安全监控

    题目 描述 (样例都懒得发出来了) 题目大意 给你一个有向图,从111号点出发,绕一圈回来.这一圈中必须经过222号点. 问经过的最少的点数(不重复). 思考历程 一看就觉得是一道神题. 然后仔细观察 ...

  8. 不熟,不会,未a的题列表

    不熟: jzoj5968. 电竞选手(不知道公式如何得来) jzoj4877. [NOIP2016提高A组集训第10场11.8]力场护盾 (对向量不熟悉,不知道为什么结果要取反) jzoj4867. ...

  9. 编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)

    查看本章节 查看作业目录 需求说明: 几个朋友到游乐场游玩,大家投票选择出行方式.如果选择"A"最多的话,表示选择的交通工具是公交车(Bus):如果选择"B"最 ...

随机推荐

  1. LeetCode刷题笔记-BFS-二叉树层次遍历

    题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ ...

  2. css3 常用的属性

    1.伪类选择符 Pseudo-Classes Selectors Selectors选择符 CSS Version版本 Description简介 E:link CSS1 设置超链接a在未被访问前的样 ...

  3. css中的zoom的作用

    1.检查页面的标签是否闭合不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题, 却仅仅源于这里.毕竟页面的模板一般都是由开发来嵌套的,而 他们很容易犯此类问题.快捷提示:可以用 Drea ...

  4. ECMAScript1.3 数组 | 函数 | 作用域 | 预解析

    数组array 数组可以存储很多项,有顺序,很多项形成一个集合,就是数组. 数组字面量是:[] 如何获取数组中的数据:索引/下标,数组中的第一项的索引是从0开始的. ['kay', 'andy', 1 ...

  5. LA2218 Triathlon /// 半平面交 oj22648

    题目大意: 铁人三项分连续三段:游泳 自行车 赛跑 已知各选手在每个单项中的速度v[i],u[i],w[i] 设计每个单项的长度 可以让某个特定的选手获胜 判断哪些选手有可能获得冠军 输出n行 有可能 ...

  6. 面试系列38 分库分表之后,id主键如何处理?

    (1)数据库自增id 这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id.拿到这个id之后再往对应的分库分表里去写入. 这个方案 ...

  7. 01->OpenGL 实验环境配置(glut)及简单实例

    --  简介  -- OpenGL是通过数学等理论知识定义3D或2D模型,由计算机通过流水线渲染技术进行渲染,产生逼真的场景图像,电影和游戏中的特效都有用到.每每看到精美的画面,真想自己也能做出如此作 ...

  8. Python基础知识之5——函数基础

    函数 函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用.Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可: http://docs.pytho ...

  9. Python学习笔记(二)——列表

    Python学习笔记(二)--列表 Python中的列表可以存放任何数据类型 >>> list1 = ['Hello','this','is','GUN',123,['I','Lov ...

  10. drupal7权限控制之-如何访问未发表的node

    在某些特殊需求的情况下,会涉及到匿名用户或非node节点所有者,访问未发表的node节点的需求:或者需要根据不同的用户角色,访问不同的内容类型等,如果不想安装node_access等模块的时候,可以在 ...