题解:AT_arc185_b [ARC185B] +1 and -1
zengziqvan · · 题解
题目大意
给定一个长为
- 选择两个位置
i,j 满足1\le i< j\le n ,将A_i 加1 并将A_j 减1 。
问序列
此时显然需要通过操作使得
显然操作
不妨让
-
A_i<A_{i+1}
此时如果直接确定
所以考虑做若干次形如
肯定是越接近后面的值越好。
所以
时间复杂度
const int N=2e5+10;
int t,n,a[N],b[N];
void solve() {
cin>>n;
FOR(i,1,n) a[i]=b[i]=read();
if(n==1) {
puts("Yes");
return ;
}
LL um=a[n];
ROF(i,n-1,2) {
um+=b[i];
if(a[i+1]<a[i]) {
int dt=a[i]-a[i+1];
a[i]-=dt;
a[i-1]+=dt;
} else {
a[i]=um/(n-i+1);
}
}
if(a[1]<=a[2]) {
puts("Yes");
}
else puts("No");
}
main() {
cin>>t;
while(t--) solve();
return 0;
}