【bzoj2216】[Poi2011]Lightning Conductor 1D1D动态规划优化
2024-08-25 00:13:10
Description
已知一个长度为n的序列a1,a2,…,an。
对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p – sqrt(abs(i-j))
Input
第一行n,(1<=n<=500000)
下面每行一个整数,其中第i行是ai。(0<=ai<=1000000000)
Output
n行,第i行表示对于i,得到的p
Sample Input
6
5
3
2
4
2
4
5
3
2
4
2
4
Sample Output
2
3
5
3
5
4
3
5
3
5
4
题解
http://ydcydcy1.blog.163.com/blog/static/2160890402013315391435/
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstdio> #define ll long long
#define N 500007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
}int n;
int a[N];
double f[N],g[N];
struct data{int l,r,p;}q[N];
double cal(int j,int i)
{
return a[j]+sqrt(abs(i-j))-a[i];
}
int find(data t,int x)
{
int l=t.l,r=t.r;
while(l<=r)
{
int mid=(l+r)>>;
if(cal(t.p,mid)>cal(x,mid))
l=mid+;
else r=mid-;
}
return l;
}
void dp(double *F)
{
int head=,tail=;
for(int i=;i<=n;i++)
{
q[head].l++;
if(head<=tail&&q[head].r<q[head].l)head++;
if(head>tail||cal(i,n)>cal(q[tail].p,n))
{
while(head<=tail&&cal(q[tail].p,q[tail].l)<cal(i,q[tail].l))
tail--;
if(head>tail)
q[++tail]=(data){i,n,i};
else
{
int t=find(q[tail],i);
q[tail].r=t-;
q[++tail]=(data){t,n,i};
}
}
F[i]=cal(q[head].p,i);
}
}
int main()
{
n=read();
for(int i=;i<=n;i++)a[i]=read();
dp(f);
for(int i=;i<=n/;i++)swap(a[i],a[n-i+]);
dp(g);
for(int i=;i<=n;i++)
printf("%d\n",max(,(int)ceil(max(f[i],g[n-i+]))));
return ;
}
最新文章
- Linux的.a、.so和.o文件
- Java中将unix时间戳转化为正常显示时间
- MAC、IDFA、IMEI正则表达式
- C语言 文件操作2--文件缓存的理解
- DevExpress navBarControl 和 xtraTabbedMdiManager实现浏览器标签页效果
- JS预览图像将本地图片显示到浏览器上的代码
- apache http server 局域网无法访问
- (转)Maven实战(二)构建简单Maven项目
- Windows最常用的几个网络CMD命令总结
- Atitit.Hibernate于Criteria 使用汇总and 关系查询 and 按照子对象查询 o9o
- java.lang.VerifyError
- gettimeofday(struct timeval *tv, struct timezone *tz)函数
- cocos2d-x 3.x 橡皮擦功能
- post提交数据长度限制问题
- AFN默认请求和响应的处理
- 了解前端中的SPA
- Markdown中使用mermaid画流程图
- Vue2.0+Node.js+MongoDB全栈打造商城系统 免费下载
- 【响应式编程的思维艺术】 (2)响应式Vs面向对象
- 【Java】Java随手记