题目:https://www.luogu.org/problemnew/show/P3515

决策单调性...

参考TJ:https://www.cnblogs.com/CQzhangyu/p/7258256.html

注释WA???最近似乎总是WA在二分上...

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int const maxn=5e5+;
int n,a[maxn],ans[maxn],h,t;
struct N{
double p,l,r;
N(int p=,int l=,int r=):p(p),l(l),r(r) {}
}q[maxn];
double calc(int i,int j){return a[i]+sqrt(abs(j-i))-a[j];}//i对j的答案
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
for(int i=,h=,t=;i<=n;i++)
{
while(h<=t&&q[h].r<i)h++;
if(h<=t)q[h].l=i,ans[i]=max(ans[i],(int)ceil(calc(q[h].p,i)));
if(h>t||calc(i,n)>calc(q[t].p,n))
{
while(h<=t&&calc(i,q[t].l)>calc(q[t].p,q[t].l))t--;
if(h<=t)
{
// int l=q[t].l,r=q[t].r,ret;
// while(l<=r)
// {
// int mid=((l+r)>>1);
// if(calc(i,mid)>=calc(q[t].p,mid))ret=mid,r=mid-1;
// else l=mid+1;
// }
// q[t].l=ret-1; q[++t]=N(i,ret,n);
int l=q[t].l,r=q[t].r+;
while(l<r)
{
int mid=((l+r)>>);
if(calc(i,mid)<calc(q[t].p,mid))l=mid+;
else r=mid;
}
q[t].r=l-; q[++t]=N(i,l,n);
}
else q[++t]=N(i,i+,n);
}
}
for(int i=n,h=,t=;i;i--)
{
while(h<=t&&q[h].l>i)h++;
if(h<=t)q[h].r=i,ans[i]=max(ans[i],(int)ceil(calc(q[h].p,i)));
if(h>t||calc(i,)>calc(q[t].p,))//
{
while(h<=t&&calc(i,q[t].r)>calc(q[t].p,q[t].r))t--;
if(h<=t)
{
// int l=q[t].l,r=q[t].r,ret;
// while(l<=r)
// {
// int mid=((l+r)>>1);
// if(calc(i,mid)>calc(q[t].p,mid))ret=mid,r=mid-1;
// else l=mid+1;
// }
// q[t].l=ret+1; q[++t]=N(i,1,ret);
int l=q[t].l,r=q[t].r;
while(l<r)
{
int mid=((l+r)>>);
if(calc(i,mid)<calc(q[t].p,mid))r=mid;
else l=mid+;
}
q[t].l=r; q[++t]=N(i,,r-);
}
else q[++t]=N(i,,i-);
}
}
for(int i=;i<=n;i++)printf("%d\n",ans[i]);
return ;
}

洛谷 P3515 [ POI 2011 ] Lightning Conductor —— 决策单调性DP的更多相关文章

  1. LOJ2074/2157 JSOI2016/POI2011 Lightning Conductor 决策单调性DP

    传送门 我们相当于要求出\(f_i = \max\limits_{j=1}^{n} (a_j + \sqrt{|i-j|})\).这个绝对值太烦人了,考虑对于\(i>j\)和\(i<j\) ...

  2. 【洛谷3515】[POI2011] Lightning Conductor(决策单调性)

    点此看题面 大致题意: 给你一个序列,对于每个\(i\)求最小的自然数\(p\)使得对于任意\(j\)满足\(a_j\le a_i+p-\sqrt{|i-j|}\). 证明单调性 考虑到\(\sqrt ...

  3. P3515 [POI2011]Lightning Conductor[决策单调性优化]

    给定一序列,求对于每一个$a_i$的最小非负整数$p_i$,使得$\forall j \neq i $有$ p_i>=a_j-a_i+ \sqrt{|i-j|}$. 绝对值很烦 ,先分左右情况单 ...

  4. 【BZOJ2216】[Poi2011]Lightning Conductor 决策单调性

    [BZOJ2216][Poi2011]Lightning Conductor Description 已知一个长度为n的序列a1,a2,...,an.对于每个1<=i<=n,找到最小的非负 ...

  5. 洛谷P1973 [NOI2011]Noi嘉年华(决策单调性)

    传送门 鉴于FlashHu大佬讲的这么好(而且我根本不会)我就不再讲一遍了->传送 //minamoto #include<iostream> #include<cstdio& ...

  6. 洛谷P3724 [AH2017/HNOI2017]大佬(决策单调性)

    传送门 这个思路很妙诶->这里 以下为了方便,我把自信说成血量好了 虽然表面上看起来每一天有很多种选择,然而我们首先要保证的是不死,然后考虑不死的情况下最多能拿出多少天来进行其他操作.不死可以d ...

  7. BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性

    BZOJ_2216_[Poi2011]Lightning Conductor_决策单调性 Description 已知一个长度为n的序列a1,a2,...,an. 对于每个1<=i<=n, ...

  8. 洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP

    洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他. 玩具上有一个数列,数列中某些项的值可能会 ...

  9. 洛谷 P3580 - [POI2014]ZAL-Freight(单调队列优化 dp)

    洛谷题面传送门 考虑一个平凡的 DP:我们设 \(dp_i\) 表示前 \(i\) 辆车一来一回所需的最小时间. 注意到我们每次肯定会让某一段连续的火车一趟过去又一趟回来,故转移可以枚举上一段结束位置 ...

随机推荐

  1. [Windows Server 2008] SQL Server 2008 数据库还原方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:还原SQL S ...

  2. The type new View.OnClickListener(){} must implement the inherited abstract method View.Onclicklis

    public class MainActivity extends Activity { protected Button startBrew = null; @Override protected ...

  3. windows server2003 多用户登陆问题解决办法

    windows server2003 多用户登陆问题解决办法 Windows Server远程登陆默认情况下只允许同时有两个用户登陆,超过两个用户会提示"超出最大连接数". 要解决 ...

  4. Python标准库os

    如果你希望自己的程序能够与平台无关的话,这个模块至关重要. os.name #'nt' for windows, 'posix' for linux/unix os.getcwd() #get cur ...

  5. C# Tuple 创建一个新二元集合

    List<string> list1=new List<string>(); List<string> list2=new List<string>() ...

  6. 安装部署NetBeans mysql Tomact joget workflow 环境

    一.安装joget workflow 1.安装jdk 下载jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html ...

  7. 7-9 旅游规划 (25 分)(Dijkstra算法)

    题意: ​ 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可 ...

  8. C#关键字详解第一节

    abstract:抽象类: 他表达对问题或者实际中的事物,对象等所设计出的抽象概念,比如一个灵感.生物等,这些都是抽像, 但是他们往往也有具体的指向,比如生物圈有人类,猴子,老虎等等,老虎和人类是实际 ...

  9. mysql中的sql查询优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进 ...

  10. [Usaco2007 Dec]队列变换

    [Usaco2007 Dec]队列变换 题目 FJ打算带他的N(1 <= N <= 30,000)头奶牛去参加一年一度的“全美农场主大奖赛”.在这场比赛中,每个参赛者都必须让他的奶牛排成一 ...