社区讨论
捞
P3515[POI 2011] Lightning Conductor参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m0du38ao
- 此快照首次捕获于
- 2024/08/28 20:30 去年
- 此快照最后确认于
- 2025/11/04 22:09 4 个月前
CPP
#include<cstdio>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
int read(){
int p=0;char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') p=(p<<1)+(p<<3)+(ch^48),ch=getchar();
return p;
}
const int N=500005;
int n,g[N];
double f[N],sq[N],dp[N];
ll a[N];
double cost(int l,int r){
return a[l]+sq[r-l];
}
void dfs(int l,int r,int L,int R){
int mid=l+r>>1;
for(int i=L;i<=min(mid,R);i++){
if(cost(i,mid)>f[mid]){
f[mid]=cost(i,mid);
g[mid]=i;
}
}
if(l<mid) dfs(l,mid-1,L,g[mid]);
if(r>mid) dfs(mid+1,r,g[mid],R);
}
int main(){
n=read();
for(int i=1;i<=n;i++){
a[i]=read();
sq[i]=sqrt(i);
}
dfs(1,n,1,n);
for(int i=1;i<=n;i++) g[i]=0;
for(int i=1;i<=n/2;i++){
swap(a[i],a[n-i+1]);
swap(f[i],f[n-i+1]);
}
dfs(1,n,1,n);
for(int i=n;i;i--){
printf("%d\n",(int)ceil(f[i])-a[i]);
}
return 0;
}
加了37行就过了,注释掉只有70第2.3.9个点WA了
CPPfor(int i=1;i<=n;i++) g[i]=0;
这是为什么???????????????
回复
共 0 条回复,欢迎继续交流。
正在加载回复...