题目链接:http://codeforces.com/contest/675/problem/C
题目大意:给你n长度的一列数, 保证他们的平均数是存在的,如样例移动, 问你移动最少的次数是多少?
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cstdlib> 6 #include <cmath> 7 #include <set> 8 #include <map> 9 #include <vector> 10 using namespace std; 11 12 13 int max(int a, int b) 14 { 15 return a > b ? a : b; 16 } 17 int main() 18 { 19 int n, a, num; 20 __int64 sum; 21 while(~scanf("%d", &n)){ 22 num = 0, sum = 0; 23 map <__int64, int> m; 24 for(int i = 0; i < n; i++){ 25 scanf("%d", &a); 26 sum += a; 27 m[sum]++; 28 num = max(num, m[sum]);//尽可能最多的0区间 29 } 30 printf("%d ", n - num);//每个k长度的0区间移动的个数为k-1 31 } 32 return 0; 33 }