挺水的一道线段树+DP题。可以从底往上添加线段,每添加线段之前查询端点所被覆盖的区间线段。再从最顶往下DP,每次从端点出发,递推覆盖该端点的区间线段的两端的值即可。

 #include <cstdio>
#include <iostream>
#include <cstring>
#include <cctype>
#include <algorithm>
#define LL __int64
using namespace std; const int N= ;
const int SN=;
const int inf=(<<);
int mark[N*];
int n,s;
int dp[SN][];
struct Seg{
int l,r;
int li,ri;
}seg[SN]; void PushDown(int rt){
if(mark[rt]!=-){
mark[rt<<]=mark[rt<<|]=mark[rt];
mark[rt]=-;
}
} void update(int rt,int L,int R,int l,int r,int d){
if(L<=l&&r<=R){
mark[rt]=d;
return ;
}
PushDown(rt);
int m=(l+r)>>;
if(L<=m)update(rt<<,L,R,l,m,d);
if(m<R)update(rt<<|,L,R,m+,r,d);
} int query(int rt,int index,int l,int r){
if(mark[rt]!=-){
return mark[rt];
}
int m=(l+r)>>;
if(index<=m) return query(rt<<,index,l,m);
else return query(rt<<|,index,m+,r);
} int main(){
while(scanf("%d%d",&n,&s)!=EOF){
int mm=N,mc=-N;
memset(mark,-,sizeof(mark));
for(int i=n-;i>=;i--){
scanf("%d%d",&seg[i].l,&seg[i].r);
mm=min(seg[i].l,mm);
mc=max(seg[i].r,mc);
dp[i][]=dp[i][]=inf;
}
seg[n].l=mm; seg[n].r=mc;
mm=abs(mm);
dp[n][]=dp[n][]=inf;
mm++;
update(,,seg[n].r+mm,,mc+mm,n);
for(int i=n-;i>=;i--){
seg[i].li=query(,seg[i].l+mm,,mc+mm);
seg[i].ri=query(,seg[i].r+mm,,mc+mm);
update(,seg[i].l+mm,seg[i].r+mm,,mm+mc,i);
}
dp[][]=abs(seg[].l-s),dp[][]=abs(seg[].r-s);
int ans=inf;
int li,ri;
for(int i=;i<n;i++){
li=seg[i].li; ri=seg[i].ri;
if(li==n){
ans=min(ans,dp[i][]+abs(seg[i].l-));
}
if(ri==n){
ans=min(ans,dp[i][]+abs(seg[i].r-));
}
dp[li][]=min(dp[li][],dp[i][]+abs(seg[li].l-seg[i].l));
dp[li][]=min(dp[li][],dp[i][]+abs(seg[li].r-seg[i].l));
dp[ri][]=min(dp[ri][],dp[i][]+abs(seg[ri].l-seg[i].r));
dp[ri][]=min(dp[ri][],dp[i][]+abs(seg[ri].r-seg[i].r));
}
printf("%d\n",ans);
}
return ;
}

POJ 2374的更多相关文章

  1. POJ 2374 Fence Obstacle Course(线段树+动态规划)

    Fence Obstacle Course Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2524   Accepted:  ...

  2. POJ 2374 线段树建图+Dijkstra

    题意: 思路: 线段树+Dijkstra(要堆优化的) 线段树要支持打标记 一个栅栏 拆成两个点 :左和右 新加一个栅栏的时候 看看左端点有没有被覆盖过 如果有的话 就分别从覆盖的那条线段的左右向当前 ...

  3. ACM数据结构相关资料整理【未完成,待补充】

    在网上总是查不到很系统的练ACM需要学习的数据结构资料,于是参考看过的东西,自己整理了一份. 能力有限,欢迎大家指正补充. 分类主要参考<算法竞赛入门经典训练指南>(刘汝佳),山东大学数据 ...

  4. 【Homework】LCA&RMQ

    我校是神校,作业竟然选自POJ,难道不知道“珍爱生命 勿刷POJ”么? 所有注明模板题的我都十分傲娇地没有打,于是只打了6道题(其实模板题以前应该打过一部分但懒得找)(不过感觉我模板还是不够溜要找个时 ...

  5. $2019$ 暑期刷题记录1:(算法竞赛DP练习)

    $ 2019 $ 暑期刷题记录: $ POJ~1952~~BUY~LOW, BUY~LOWER: $ (复杂度优化) 题目大意:统计可重序列中最长上升子序列的方案数. 题目很直接的说明了所求为 $ L ...

  6. poj 题目分类(1)

    poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...

  7. POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)

    本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...

  8. poj 动态规划题目列表及总结

    此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...

  9. poj动态规划列表

    [1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...

随机推荐

  1. ortp库使用入门

    我们知道, RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议,做流媒体传输方面的应用离不开RTP协议的实现及使用,为了更加快速地在项 ...

  2. Error-Java-IJ:Imported project refers to unknown jdks JavaSE-1.7

    ylbtech-Error-Java-IJ:Imported project refers to unknown jdks JavaSE-1.7 Import from EclipseImported ...

  3. HTML中的文本框textarea标签

    转自:https://www.jb51.net/web/183411.html <textarea></textarea>用来创建一个可以输入多行的文本框,此标志对用于< ...

  4. 最新昆石VOS2009/VOS3000手机号段导入文件(手机归属地)

    使用2017年4月最新版手机号段归属地制作,支持所有版本的VOS 共360569条记录,兼容所有版本的昆石VOS,包括VOS2009.vos3000.vos5000 导入比较简单.下载后解压到桌面在V ...

  5. Win7系统专栏

    1.去掉Win7快捷方式小箭头的方法如下: 使用普通方法会使系统出现异常,比如开始菜单程序无法删除.收藏夹无法展开等,网上流传使用透明图标的方法会在快捷方式上留下一块黑痣,下面的方法是小君研究出来的, ...

  6. 单向链表的归并排序——java实现

    在做Coursera上的Algorithms第三周测验练习的时候有一道链表随机排序问题,刚开始没有什么思路,就想着先把单向链表归并排序实现了,再此基础上进行随机排序的改造.于是就结合归并排序算法,实现 ...

  7. Coursera Algorithms week2 基础排序 练习测验: Permutation

    题目原文: Given two integer arrays of size n , design a subquadratic algorithm to determine whether one ...

  8. 自己动手丰衣足食,为Zepto添加Slide动画效果

    一.缘由 公司的移动端项目,采用zepto为主要框架,但是zepto毕竟是精简版的jquery,体积小了,功能自然没有这么强大,特别是动画和选择器这两块,需要我们自己去拓展. 在项目开发过程中,很多页 ...

  9. bzoj2822[AHOI2012]树屋阶梯(卡特兰数)

    2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 879  Solved: 513[Submit][Status] ...

  10. Docker 探索安装WordPress+Mysql8.0

    拉取MYSQL,注意默认是8.0版本,连接加密方式有变化 docker pull mysql 运行MYSQL docker run --name wordpress-mysql -p 3306:330 ...