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);
} 

 

posted @ 2016-05-17 22:26  FireCool  阅读(133)  评论(0编辑  收藏  举报