国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ2792: [Poi2012]Well

2019-11-08 02:56:54
字體:
來源:轉載
供稿:網友

先二分z 然后將序列調整成相鄰數字的差都不超過z 計算對于每個位置i將它調成0,維護序列需要的操作次數,比如計算左側的貢獻,用j表示最左一個點不滿足abs(a[i]-a[j])<=(i-j)*z,隨i的增加j單調遞增,且因為之前已經將序列調整過使得相鄰數字差不超過z,所以可以O(1)算出j~i調整的操作次數,對于右側點類似

code:

#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long long#define lowbit(x) x&(-x)using namespace std;void read(ll &x){ char c; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0';}const int maxn = 1100000;ll n,m,a[maxn];ll b[maxn];ll l,r;ll s[maxn];ll lx[maxn],rx[maxn];ll judge(ll x){ ll sum=0; for(ll i=1;i<=n;i++) s[i]=0,b[i]=a[i]; for(ll i=2;i<=n;i++) { if(b[i]>b[i-1]+x) sum+=b[i]-b[i-1]-x,b[i]=b[i-1]+x; } for(ll i=n-1;i>=1;i--) { if(b[i]>b[i+1]+x) sum+=b[i]-b[i+1]-x,b[i]=b[i+1]+x; } if(sum>m) return 0; for(ll i=1;i<=n;i++) s[i]=s[i-1]+b[i]; ll left,right; left=1; for(ll i=1;i<=n;i++) { while(left<i&&b[left]<=(i-left)*x) left++; lx[i]=left==i?0:s[i-1]-s[left-1]-x*(i-left+1ll)*(i-left)/2ll; } right=n; for(ll i=n;i>=1;i--) { while(right>i&&b[right]<=(right-i)*x) right--; rx[i]=right==i?0:s[right]-s[i]-x*(right-i+1ll)*(right-i)/2ll; } for(ll i=1;i<=n;i++) if(sum+lx[i]+rx[i]+b[i]<=m) return i; return 0;}ll solve(ll &ans){ ll temp; while(l<=r) { ll mid=(l+r)>>1; if(temp=judge(mid)) r=mid-1,ans=temp; else l=mid+1; } return r+1;}int main(){ read(n); read(m); l=r=0; for(ll i=1;i<=n;i++) { read(a[i]); if(r<a[i]) r=a[i]; } ll Z,K; Z=solve(K);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 来凤县| 瑞丽市| 江安县| 舞阳县| 黑水县| 常州市| 安仁县| 尼木县| 翁源县| 博爱县| 云南省| 南涧| 凉山| 辰溪县| 海口市| 汕尾市| 定边县| 香港 | 绿春县| 沈阳市| 德兴市| 东莞市| 甘洛县| 荣昌县| 岐山县| 宁德市| 澄迈县| 招远市| 卓资县| 共和县| 九龙县| 大名县| 佛冈县| 乌恰县| 龙江县| 多伦县| 梅州市| 大洼县| 孝昌县| 东阿县| 会东县|