http://uoj.ac/problem/187

每个点只能从时间,b+a,b-a三维都不大于它的点转移过来,将点按时间分成尽量少的一些段,每段内三维同时非严格单调,每段内的点可能因为连续选一段而产生平方的贡献,可以每段开一个单调栈维护斜率优化dp处理。

注意到b-a和b+a同时小于可以推出时间小于,因此可以按b-a升序处理,b+a一维用树状数组维护前缀最值,处理选的点在时间上不连续的情况。

#include<bits/stdc++.h>
typedef long long i64;
const int N=5e5+;
int _(){
int x=,c=getchar();
while(c<)c=getchar();
while(c>)x=x*+c-,c=getchar();
return x;
}
int n,xs[N],xp=,idp=;
i64 f[N],bit[N],ans=;
void maxs(i64&a,i64 b){if(a<b)a=b;}
void ins(int x,i64 y){
for(;x<=xp;x+=x&-x)maxs(bit[x],y);
}
i64 sum(int x){
i64 y=;
for(;x;x-=x&-x)maxs(y,bit[x]);
return y;
}
i64 F(int x){
return f[x]+i64(x)*x;
}
int mem[N],*mp=mem;
struct mq{
int*q,p;
void init(int sz){
q=mp,mp+=sz;
p=-;
}
void upd(int i){
int K=*i+;
while(p>){
int a=q[p],b=q[p-];
if(F(b)-F(a)>=K*i64(b-a))--p;
else break;
}
if(p>=){
int w=q[p],d=i+-w;
maxs(f[i],f[w]+i64(d)*d-);
}
while(p>){
int a=q[p-],b=q[p];
i64 Fb=F(b);
if((Fb-F(a))*(i-b)<=(F(i)-Fb)*(b-a))--p;
else break;
}
q[++p]=i;
}
}qs[N];
struct pos{
int x,y,id,tp;
void init(int a,int b,int c){
xs[++xp]=x=a;
y=b;
id=c;
}
void upd(){
f[id]=+sum(x);
qs[tp].upd(id);
ins(x,f[id]);
}
bool operator<(const pos&p)const{
return y<p.y||y==p.y&&x<p.x;
}
bool operator<=(const pos&p)const{
return x<=p.x&&y<=p.y;
}
}ps[N];
int main(){
n=_();
for(int i=;i<=n;++i){
int a=_(),b=_();
ps[i].init(b+a,b-a,i);
}
for(int i=,j=;i<=n;i=j){
for(++j;j<=n&&ps[j-]<=ps[j];++j);
for(qs[++idp].init(j-i);i<j;ps[i++].tp=idp);
}
std::sort(xs+,xs+xp+);
for(int i=;i<=n;++i){
ps[i].x=std::lower_bound(xs+,xs+xp+,ps[i].x)-xs;
}
std::sort(ps+,ps+n+);
for(int i=;i<=n;++i)ps[i].upd();
for(int i=;i<=n;++i)maxs(ans,f[i]);
printf("%lld\n",ans);
return ;
}

uoj#187. 【UR #13】Ernd的更多相关文章

  1. UOJ 188 【UR #13】Sanrd——min_25筛

    题目:http://uoj.ac/problem/188 令 \( s(n,j)=\sum\limits_{i=1}^{n}[min_i>=p_j]f(j) \) ,其中 \( min_i \) ...

  2. uoj#188. 【UR #13】Sanrd(Min_25筛)

    题面 传送门 题解 这是一道语文题 不难看出,题目所求即为\(l\)到\(r\)中每个数的次大质因子 我们考虑\(Min\_25\)筛的过程,设 \[S(n,j)=\sum_{i=1}^nsec_p( ...

  3. UOJ #188. 【UR #13】Sanrd

    Description 给定 \(\sum_{i=l}^r f[i]\) \(f[i]=\) 把 \(i\) 的每一个质因子都从小到大排列成一个序列(\(p_i^{c_i}\)要出现 \(c_i\) ...

  4. 「uoj#188. 【UR #13】Sanrd」

    题目 不是很能看懂题意,其实就是求\([l,r]\)区间内所有数的次大质因子的和 这可真是看起来有点鬼畜啊 这显然不是一个积性函数啊,不要考虑什么特殊的函数了 我们考虑Min_25筛的过程 设\(S( ...

  5. uoj#186 【UR #13】Yist

    题目 orz myy 首先注意到答案有单调性,于是我们可以考虑二分一个\(x\),之后去判断一下每次只使用长度为\(x\)的区间能否删出目标序列 显然我们应该贪心地删除需要删除元素中最小的那一个,感性 ...

  6. UOJ 241. 【UR #16】破坏发射台 [矩阵乘法]

    UOJ 241. [UR #16]破坏发射台 题意:长度为 n 的环,每个点染色,有 m 种颜色,要求相邻相对不能同色,求方案数.(定义两个点相对为去掉这两个点后环能被分成相同大小的两段) 只想到一个 ...

  7. uoj #118. 【UR #8】赴京赶考 水题

    #118. [UR #8]赴京赶考 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/118 Description ...

  8. uoj #31. 【UR #2】猪猪侠再战括号序列 贪心

    #31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...

  9. [UOJ 74] 【UR #6】破解密码

    题目链接:UOJ - 74 题目分析 题目中,将字符串 S 的第一个字符移到末尾,其他字符向前移动一个位置,f(S) 就从 Hi 变成了 Hi+1. 我们分析一下这个过程:假设第一个字符为 c, (H ...

随机推荐

  1. 20155208徐子涵 2016-2017-2 《Java程序设计》第6周学习总结

    20155208徐子涵 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 10.1.1 1.Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串 ...

  2. linux zip tar 压缩打包命令

    zip 压缩命令:(可压缩文件或目录) 压缩文件: zip new_name.zip  file_name unzip name.zip   解压 压缩文件或目录: 指定解压位置: unzip  na ...

  3. 踩坑tomcat8.5的cookie机制

    https://www.pomelolee.com/1601.html tomcat升级到8.5版本 发现登录和退出报错,报错日志为下 [http-nio-8080-exec-20] 2016 Aug ...

  4. MBR, EFI, 硬盘分区表

    文章目录 硬盘MBR详细介绍 结束柱面号(End cylinder)超过1023时怎么处理 grub stage 1 是如何引导grub stage 2 的 MBR和2TB的限制 (MBR/GPT/E ...

  5. js语言中的新发现和一些总结

    js中定义变量加var和不加var的区别 原创 2016年09月01日 10:17:33 标签: js 3658 这个问题其实我在面试的时候有被问到过,当时我记得我回答的很模糊,面试官看到我好像不太清 ...

  6. day 46 html 学习 列 表格,

    列表 1.无序列表 <ul type="disc"> <li>第一项</li> <li>第二项</li> </ul ...

  7. 基于.NET平台常用的框架整理 【转载】

    [转载] http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个 ...

  8. zabbix--3.0--1

    实验环境 实验用2到2台机器,实验所用机器系统环境如下,可以看到2台机器的主机名和IP地址 [root@linux-node1 ~]# cat /etc/redhat-release CentOS L ...

  9. 谈谈 在 .Net 生态里为什么没有 Hadoop 系列 ?

    在 .Net 生态里为什么没有 Hadoop 系列  ? 有需要 有 Hadoop 系列 吗  ?

  10. 在浏览器中输入url回车之后会发生什么

    在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...