Codeforces Round #353 (Div. 2) C. Money Transfers
解题思路:由均分纸牌的思想可以得知 当区间和为0的区间个数出现最多时,所需要的移动次数是最少的,从1遍历到n 如果相同数字产生次数最多的即为区间和为0个数出现最多的次数(相同数字的产生是因为中间区间和为0),起点的位置不会影响区间和的个数,因为整体区间就那一个。
注意题目的数据类型。
#include<iostream> #include<algorithm> #include<map> using namespace std; map<long long,int> m; int main(){ int n,temp,counter; long long sum; scanf("%d",&n); sum = counter = 0; for(int i=0;i<n;i++){ scanf("%d",&temp); sum += temp; m[sum]++; counter = max(counter,m[sum]); } printf("%d\n",n-counter); }