首先我们要注意到一个事情

如果一个灯塔向左覆盖,那么比他小的某个灯塔如果向左覆盖的端点大于当前塔向左覆盖的端点,他一定向右覆盖

对于当前灯塔向右覆盖也是同理

那么我们只需要记录当前覆盖到的端点就可以完成转移了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<vector>
using namespace std; typedef long long LL;
const int maxn=310;
const LL oo=1LL<<62;
int n,m,a[maxn],b[maxn],p[maxn],L[maxn],R[maxn];
LL dp[maxn][maxn][maxn],ans;
vector<int>V;
void cmax(LL &a,LL b){if(a<b)a=b;} int main(){
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d%d",&a[i],&b[i]);
V.push_back(a[i]);V.push_back(a[i]+b[i]);V.push_back(a[i]-b[i]);
}
sort(V.begin(),V.end());
V.erase(unique(V.begin(),V.end()),V.end());
for(int i=0;i<n;++i){
p[i]=lower_bound(V.begin(),V.end(),a[i])-V.begin();
L[i]=lower_bound(V.begin(),V.end(),a[i]-b[i])-V.begin();
R[i]=lower_bound(V.begin(),V.end(),a[i]+b[i])-V.begin();
}
m=V.size();
for(int i=0;i<m;++i){
for(int j=0;j<m;++j){
for(int k=0;k<m;++k){
dp[i][j][k]=-oo;
}
}
}
for(int i=0;i<m;++i)dp[0][0][i]=0;
for(int i=0;i<m-1;++i){
int pos=-1;
for(int j=0;j<n;++j)if(p[j]==i)pos=j;
for(int j=0;j<m;++j){
for(int k=0;k<m;++k){
if(dp[i][j][k]>=0){
if(pos==-1){
cmax(dp[i+1][j][k],dp[i][j][k]+(j>=i+1||k<=i?(V[i+1]-V[i]):0));
}else{
cmax(dp[i+1][max(j,R[pos])][k],dp[i][j][k]+V[i+1]-V[i]);
if(k==L[pos]){
for(int l=k;l<m;++l)cmax(dp[i+1][max(j,i)][l],dp[i][j][k]+(j>=i+1||l<=i?(V[i+1]-V[i]):0));
}
}
}
}
}
}
ans=0;
for(int i=0;i<m;++i)cmax(ans,dp[m-1][i][m-1]);
printf("%I64d\n",ans);
return 0;
}

  

codeforces #313 div1 E的更多相关文章

  1. codeforces #313 div1 D

    好神的题目! 首先我们运用pick定理A=S-B/2+1将要求的东西转化掉 之后分离变量,我们变成了求选取凸包面积的期望和求选取凸包在边界上的点的期望 我们先考虑求选取凸包面积的期望 如何计算凸多边形 ...

  2. codeforces #313 div1 C

    同BZOJ 3782 上学路线 QAQ 还比那个简单一点 把坐标(1,1)-(n,m)平移成(0,0)-(n-1,m-1) 设dp[i]表示从(1,1)出发第一次经过障碍且到达第i个障碍的方案数 首先 ...

  3. codeforces #313 div1 B

    模拟判定就可以了 判定字符串是否相等用hash来判断 QAQ 值得一提的是一开始我交的时候T了 结果我将递归的顺序调整了一下就A了 (并不知道为什么 #include<cstdio> #i ...

  4. codeforces #313 div1 A

    捕获一只野生大水题! 首先我们知道边长为L的正三角形含有边长为1的小正三角形为L^2个 那么我们可以通过在六边形的正上,左下,右下补充正三角形使得原图形变成正三角形 然后再将补充的减去即可 #incl ...

  5. codeforces 407 div1 B题(Weird journey)

    codeforces 407 div1 B题(Weird journey) 传送门 题意: 给出一张图,n个点m条路径,一条好的路径定义为只有2条路径经过1次,m-2条路径经过2次,图中存在自环.问满 ...

  6. codeforces 407 div1 A题(Functions again)

    codeforces 407 div1 A题(Functions again) Something happened in Uzhlyandia again... There are riots on ...

  7. Codeforces Round 313(div1)

    A题: 题目大意: 给出内角全为120度的六边形的六条边的边长,求由多少边长为1的等边三角形构成. 解题思路: 将六边形补全为一个大的等边三角形,则大的等边三角形的边长为六边形的相邻三边之和,接着减去 ...

  8. codeforces #305 div1 done

    总算搞定了这一场比赛的题目,感觉收获蛮大 其中A,B,C都能通过自己的思考解决掉 D题思路好神,E题仔细想想也能想出来 以后坚持每两天或者一天做一场CF的div1的全套题目 除非有实在无法做出来的题目 ...

  9. Codeforces #254 div1 B. DZY Loves FFT 暴力乱搞

    B. DZY Loves FFT 题目连接: http://codeforces.com/contest/444/problem/B Description DZY loves Fast Fourie ...

随机推荐

  1. 【转】fread函数和fwrite函数

    1.函数功能   用来读写一个数据块. 2.一般调用形式   fread(buffer,size,count,fp);   fwrite(buffer,size,count,fp); 3.说明   ( ...

  2. mysql的时间函数

    from_unixtime()是MySQL里的时间函数 date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值 ...

  3. Java中的类加载器以及Tomcat的类加载机制

    在加载阶段,虚拟机需要完成以下三件事情: 1.通过一个类的全限定名来获取其定义的二进制字节流. 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构. 3.在Java堆中生成一个代表这个类 ...

  4. iOS Mac系统下Ruby环境安装

    由EasyIOS引出的一系列问题:转载的上一篇CocoaPods安装和使用教程中说明了,为什么要使用cocoapods ,但是要安装cocoapods需要Ruby环境,安装Ruby环境首先需要安装Xc ...

  5. python(五)图形用户界面easyGUI入门

    1.首先我们配置环境 先在网上下载一个包文件 2.然后在命令行输入安装命令 3.安装完成后看一下具体安装到了哪里 4.下面进入正题 运行程序: 如果你觉得对话框太大,可以在easygui的配置文件里修 ...

  6. jquery checkBox的问题

    在新版的jquery中选择ckeckbox最好使用prop方法,否则会出现一些问题.比如手动点击取消,再使用代码全选或者反选时候就不好使啦!!!

  7. 装tortoiseSVN时遇到的坑

    今天给新电脑配置开发环境,线上SVN地址申请权限以后,在本地装了tortoiseSVN,可是安装了以后死活打不开.明明浏览器里可以打开SVN地址,但是tortoiseSVN的浏览器里却打不开,摆弄了很 ...

  8. 如何设置eclipse开发的web工程自动发布到tomcat的webapps下?

    使用eclipse开发web工程,在配置好服务器(tomcat)之后运行该web工程,发现能正常运行.但是问题在于,当你打开tomcat路径\webapps时,会发现没有该web应用(你的web工程名 ...

  9. DB2中循环日期跑数据

    1.数据库版本: 2.具体实现方式: ),)) /*************************************************************************** ...

  10. wpf 实现全屏与取消全屏

    /// <summary> /// 全屏 /// </summary> public void ToFullscreen() { //存储窗体信息 m_WindowState ...