COCI.RIJEKA

题目类型:虚拟题目 时间限制:1.0s 空间限制:64.0MB 提交文件大小限制:100.0KB 提示:%I64d & %I64u
一条大河边上有M+1个村庄,村庄从0到M依次编号,,每个相邻村庄间的距离为1.MIRKO 住在0号村庄,他要驾船到M个村庄去,沿途有N个人要上船并到自己的目的地。MIRKO将送每一个人到他们的目的地,并最后将船停在M村庄。他的船足够大能装下所有的人,问他要航行的最短距离是多少?
一个例子。A要从村庄2到村庄8,B要从村庄6到村庄4。MIRKO可以先从0到2让A上船,然后到6,让B上船,然后到4让B下,然后到8,最后到M。
INPUT
第一行两个整数 N and M (N ≤ 300 000, 3 ≤ M ≤ 10^9).
接下来N行,每行两个整数,表示人们的要求.
OUTPUT
一个数,表示最短距离.
SCORING
In test cases worth a total of 40% points, N ≤ 5000 will hold.
In test cases worth a total of 50% points, M ≤ 2000000 will hold.
EXAMPLE TEST DATA
input
2 10
2 8
6 4
output
14
input
8 15
1 12
3 1
3 9
4 2
7 13
12 11
14 11
14 13
output
27

Problem:
题意还是比较清楚,求最小情况

Solution:
刚开始我们可以找找规律,看看特殊情况之类的
首先我们必然会走的路:

我们需要从0走到m

那么如果一个任务是是正向的

a->b a<=b的话,那么我们可以顺路得完成,不用多余的路

1和2都被顺路完成

而3是从0-m是最长的,我们就可以知道,如果任务是a->b a<=b的都可以被忽略,因为都可以被顺路完成

那么我们现在就只用考虑a->b a>b 倒着走的

逆向的情况根据刚刚我们正向分析的性质,也只到包含关系的内部可以省略

5可以省略

所以最后我们只用考虑的情况是

考虑我们是把4完成了,再完成5,还是4,5一起完成?

我们发现4,5一起完成会少走他们交集的那么段路

并且我们发现多个情况,也是一起完成是会更优

所以我们就有了贪心策略

只有有交集的都一起完成,否则就单独完成


附上代码:

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+12;
int n,m;
struct node
{int l,r;bool operator < (const node & other )const {if(l==other.l) {return r<other.r;}return l< other.l;}
}edge[N];
int cnt;
long long f[N];int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%d%d",&n,&m);int a,b;for(int i=1;i<=n;i++) {scanf("%d%d",&a,&b);if(a<=b) continue;edge[++cnt]=(node){b,a};}sort(edge+1,edge+cnt+1);int mx=0;int temp=cnt;cnt=0;for(int i=1;i<=temp;i++) {if(edge[i].r<=mx) continue;edge[++cnt]=edge[i];mx=max(mx,edge[i].r);}f[1]=1LL*edge[1].l+(long long)(edge[1].r-edge[1].l)*3;int l=edge[1].l,r=edge[1].r;int id=1;for(int i=2;i<=cnt;i++) {if(edge[i].l<=r) {f[i]=f[id-1]+(long long)(edge[i].r-l)*3+1LL*(edge[id].l-edge[id-1].r);r=max(r,edge[i].r);}else {f[i]=f[i-1]+(long long)(edge[i].r-edge[i].l)*3*1LL+1LL*(edge[i].l-edge[i-1].r);l=edge[i].l;r=edge[i].r;id=i;}}long long ans=f[cnt]+1LL*(m-edge[cnt].r);printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Heey/p/9125993.html

COCI. RIJEKA相关推荐

  1. [COCI2015]COCI

    [COCI2015]COCI 题目大意: 有\(n(n\le5\times10^5)\)个人比赛,比赛总共进行\(3\)轮,每一轮得分为\([0,650]\)内的整数.现在已经得知每个人前两轮的成绩. ...

  2. [COCI 2017-2018-2]-San

    [COCI 2017-2018-2]-San san(1s64M) 游戏世界中有N个楼从左到右排列,从左到右编号为1到N,第i幢楼的高度为Hi,楼上的金币数为Gi,游戏可以从任意一个楼开始且包涵几步. ...

  3. 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树

    题目传送门: 洛谷 P1873 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮 ...

  4. 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树(二分法)

    题目链接 : 洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树 文章目录 前言 一.题目 题目描述 输入格式 输出格式 输入输出样例 说明/提示 二.代码 前言 第一次写博客, ...

  5. 【C++】洛谷P1873 [COCI 2011/2012 #5] EKO / 砍树

    [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 MMM 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一般砍 ...

  6. 寒假作业:COCI 2014/2015题选 题目与题解

    目录 T1 MAFIJA 题目 题解 T2 ZABAVA 题目 题解 T3 KAMP 题目 题解 T4 BOB 题目 题解 T5 SUMA 题目 题解 T6 NORMA 题目 题解 T7 COCI 题 ...

  7. 《二分答案》—— P1873 [COCI 2011/2012 #5] EKO / 砍树

    [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材.对 Mirko 来说这是很简单的工作,因为他有一个漂亮的新伐木机,可以如野火一 ...

  8. COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution

    COCI 2018/2019 CONTEST #2 T4 T5 Solution abstract 花式暴力 #2 T5 Sunčanje 题意 按顺序给你1e5个长方形(左下角坐标&& ...

  9. COCI 2020/2021 Svjetlo(树形DP)

    COCI 2020/2021 Svjetlo 题目大意 求最短的树上路径(可以重复经过点或边)长度使得经过每个点的次数满足给定的奇偶性.树的大小为NNN. N≤500000N\le 500000N≤5 ...

最新文章

  1. 假装不知道有尽头(博弈论的诡计)
  2. android -各种适配器
  3. Android属性 android:focusableInTouchMode
  4. java新手笔记21 接口
  5. Ajax缓存解决办法
  6. [scala-spark]11. RDD控制操作
  7. 大厅安排(normal)
  8. Hadoop大数据——mapreduce的Distributed cache
  9. 【转】3.3(译)构建Async同步基元,Part 3 AsyncCountdownEvent
  10. JEECG第二期深入使用培训(报名截止2014-06-21)
  11. WPF下递归生成树形数据绑定到TreeView上
  12. 去除Many2one字段的“创建并编辑”选项
  13. 平面直角坐标系中的旋转公式_【初中数学大招流】从平面几何到解析几何
  14. 如何制作简单的html静态网页
  15. java dwg转pdf_java实现CAD图纸文件DWG格式转为PDF格式
  16. 基于R语言的聚类(谱聚类)
  17. 成都旅游住宿购物交通攻略87
  18. 标准化学校考场自动校时同步时钟系统
  19. 质因数的分解(java)
  20. 计算机网络进阶 ---- 网络类型 ---- 二层封装协议 ---- HDLC ---- PPP ---- pap认证 ---- chap认证 ---- 详解

热门文章

  1. python双重直方图_Python 2.x中两幅图像的直方图匹配?
  2. redis sigterm 信号
  3. Sinc函数同一个定积分, 三种不同的方法
  4. 给大家推荐一款免费虚拟主机 优豆云
  5. 计算方法 [课程学习]
  6. 中国科学家构建世界首台超越早期经典计算机的光量子计算机
  7. Jumony Core 2.2 发布
  8. 计算机设备制造行业概述,计算机整机制造行业分析报告_中国计算机整机制造行业市场需求与投资规划分析报告-前瞻产业研究院...
  9. cv2 imread()函数
  10. access中本年度的四月一日_计算机二级ACCESS上机题