1320 例6 2 均分紙牌 Noip2002

2021-08-21 04:50:12 字數 673 閱讀 4607

有n堆紙牌,編號分別為 1,2,…, n。每堆上有若干張,但紙牌總數必為n的倍數。可以在任一堆上取若干張紙牌,然後移動。

移牌規則為:在編號為1的堆上取的紙牌,只能移到編號為 2 的堆上;在編號為 n 的堆上取的紙牌,只能移到編號為n-1的堆上;其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。

現在要求找出一種移動方法,用最少的移動次數使每堆上紙牌數都一樣多。

例如 n=4,4堆紙牌數分別為:  ① 9 ② 8 ③ 17 ④ 6

移動3次可達到目的:

從 ③ 取4張牌放到④(9 8 13 10)->從③取3張牌放到 ②(9 11 10 10)-> 從②取1張牌放到①(10 10 10 10)。

n(n 堆紙牌,1 ≤ n ≤ 100)

a1 a2 … an (n 堆紙牌,每堆紙牌初始數,l≤ ai ≤10000)。

所有堆均達到相等時的最少移動次數。

4

9 8 17 6

3思路:

求平均數,然後每個數減去平均數,然後不管是正數還是負數,都向下乙個移動,最後會都等於0

至於這題是貪心,應該是每一步驟都是變為0,這種求解吧。

#includeusing namespace std;

int main()

int a=flag/n;

for(int i=0;i

Noip 1320 均分紙牌(貪心)

時間限制 1000 ms 記憶體限制 65536 kb 提交數 1099 通過數 570 有n堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為n的倍數。可以在任一堆上取若干張紙牌,然後移動。移牌規則為 在編號為1的堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,...

RQNOJ 62 NOIP2002 均分紙牌

rqnoj 62 我們可以將牌在相鄰堆之間的移動想象成經過了一條邊,那麼任意兩堆相鄰的牌之間都會有一條邊,而且在最優情況下每條邊應當是至多經過一次的,如果超過一次的話也可以通過相消變成至多經過一次。那麼如何確定一條邊要不要被走呢?實際上對於任意一條邊來講,都將牌劃分成了左右兩部分,如果兩部分各自內部...

NOip2002均分紙牌

題目描述 有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙牌,可以移到相鄰左邊或右...