题解:CF1392F Omkar and Landslide
题目链接
CF1392F Omkar and Landslide (*2400)
解题思路
结论题,最终的序列只与
大致证明就是,首先这个序列是单调不降的,并且,对于任意
那么可以刻画成以下的问题,初始有一个
- 将这个数
+1 后,序列依然单调不降。 - 将这个数
+1 后,序列任意两个数差值不超过1 。
这个贪心是容易做的,总时间复杂度
参考代码
ll n,S;
ll a[1000010];
ll b[1000010];
//tulpa
void _clear(){}
void solve()
{
_clear();
cin>>n;
forl(i,1,n)
cin>>a[i],
S+=a[i]-i+1,
b[i]=i-1;
// cout<<S<<endl;
ll num=S/n;
forl(i,1,n)
b[i]+=num;
S-=num*n;
forl(i,1,n)
if(S)
b[i]++,
S--;
forl(i,1,n)
cout<<b[i]<<' ';
cout<<endl;
}