P1031-均分纸牌
均分纸牌
原题:传送门
解题思路:因为每一堆都只能移动到相邻的堆里,那就把每一堆不满足平均数的堆都往后一堆移动,只考虑后一堆(前一堆已经弄好,不需要再弄)
比如:2 2 8
4 0 8
4 4 4
代码:
1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 5 int a[10001]; 6 int n; 7 8 int main() { 9 cin >> n; 10 int i; 11 int result = 0; 12 int len = 0; 13 for (i = 0; i < n; i++) { 14 cin >> a[i]; 15 len += a[i]; 16 } 17 len = len / n; 18 for (i = 0; i < n; i++) { 19 if (a[i] != len) { 20 a[i + 1] += a[i] - len; 21 result++; 22 } 23 } 24 cout << result << endl; 25 return 0; 26 }