Codeforces Round #353 Money Transfers

来源:互联网 发布:淘宝卖高仿会不会坐牢 编辑:程序博客网 时间:2024/05/16 00:28

1.是个环。
2.保证有解。
3.要求最少步骤使每个点为0,即分段为0;
4.当分为K段时每段和为0,每段的值都移到一个点所以最后的总步骤为n-k,即K最大总步骤最小
5.储存1到n个数进行累加和,看哪个和出现的最多就是分的最多段。
6,注意long long

#include<cstdio>#include<algorithm>#include<map>#define LL long longusing namespace std;int a,n;int main(){   map<LL,int>mp;   int ans = 0;   LL sum = 0;   scanf("%d",&n);   for(int i=0;i<n;i++)   {      scanf("%d",&a);      sum += a;      mp[sum]++;      ans = max(ans,mp[sum]);   }   printf("%d\n",n-ans);   return 0;}

ps:如果不是环,变个形统计累加和为0的个数就行了。

0 0
原创粉丝点击