有n個人圍成一圈,每個人有一定數量的金幣,每次只能挪動乙個位置,求挪動的最少金幣使他們平分金幣
藍書p6
令x1為1號給2號的金幣數,負數代表反方向 x2為2號給3號的金幣數 x3為3號給4號的金幣數
而a1-x1+xn=m(m為平均數)a2-x2+x1=m a3-x3+x2=m
我們要求的就是|x1|+|x2|+|x3|+...|xn|
用x1表示x2,x3,x4
ans=|x1|+|x1-g1|+|x1-g2|....
x1到n個點的距離和最短時,就是正解
而這個點==g[mid]
#include #include #include #define ll long longusing namespace std;
const int maxn=1000000+5;
ll num[maxn];
int main()
ll m=sum/n;
num[1]=0;
for(int i=2;i<=n;i++)
num[i]=m-num[i]+num[i-1];
sort(num+1,num+1+n);
int mid=n/2+1;
ll ans=0;
for(int i=1;i<=n;i++)
ans+=abs(num[mid]-num[i]);
printf("%lld\n",ans);
} return 0;
}
UVA 11300 問題轉換
首先,定義 xi 為 i 給 i 1多少個硬幣 記平均數為m 可得到n 1個方程 a1 原來i有的硬幣 x1 x2 m a2 x2 x3 m 特別說明第n個方程可由前n 1個推出,所以去掉 將式子變形 x2 x1 m a1 x3 x1 2 m a1 a2 記a1 m 為 c1 a1 a2 m 為 c...
UVA11300計算幾何 正n邊形內的最長的線
1 uva11300 2平面幾何 3正n邊形內的最長的線是哪條?4歸納推理 5舉例n 3,4,5,6 n為偶數,因為正對的兩個點在分割的圓上,所以最長 6n為奇數,做頂點到對邊的垂線,定點到相對點的連線,因為構成直角三角形,所以斜邊大於直角邊,得證對頂點連線最長 7假設最長邊長為2 x,則 8s n...
uva515 差分約束
題目的意思就是就是求問是否存在滿足條件的序列 就是指 從 開始加,往後在加兩個 就是指 這是一道 差分約束 模板題,這裡就不具體說差分約束了 給大家乙個部落格 include includeconst int inf 0x3f3f3f3f const int n 220 int u n int v ...