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

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

BZOJ3293: [Cqoi2011]分金幣

2019-11-06 06:12:11
字體:
來源:轉載
供稿:網友

經典貪心

設第x人給他右邊的人xi個金幣,因為最后每個人的金幣數ave易知,所以可以得到n個方程: a1+xn-x1=ave a2+x1-x2=ave ….. 設bi=ai-ave 得 x1=xn+b1 x2=x1+b2=xn+b1+b2 …. 設ci=∑ii=1bi 所以答案就是 ans=∑|xi|=∑|xn+ci| 將所有ci取反,得ans=∑|xn?ci|,當xn為這些數的中位數時ans有最小值


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;const int maxn = 110000;int a[maxn],n;ll as[maxn];int main(){ scanf("%d",&n); ll s=0; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); a[i]=x; s+=x; } s/=(ll)n; ll ave=s; s=0; for(int i=1;i<n;i++) { s+=a[i]-ave; as[i]=-s; } as[n]=0; sort(as+1,as+n+1); ll ans; if(n&1) ans=as[n/2+1]; else ans=(as[n/2]+as[n/2+1])/2; ll ret=0; for(int i=1;i<=n;i++) ret+=abs(ans-as[i]);
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汕头市| 西充县| 台中县| 通道| 静宁县| 蕲春县| 高阳县| 陇川县| 舞钢市| 鸡泽县| 恩平市| 温宿县| 兴化市| 鹤山市| 郴州市| 金乡县| 双桥区| 巴东县| 鄂州市| 贵南县| 琼海市| 丰台区| 思茅市| 舒城县| 关岭| 漳浦县| 屯门区| 新余市| 库尔勒市| 阳原县| 通河县| 临邑县| 长沙县| 宜章县| 安义县| 伊宁县| 闸北区| 神木县| 本溪市| 襄城县| 大方县|