码迷,mamicode.com
首页 > 其他好文 > 详细

第十二周 5.16 --- 5.22

时间:2016-05-18 00:13:17      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

5.16

...

5.17

 cf353 c  C - Money Transfers

只想到如果一个区间长度为 x 的话,需要 x-1次操作

然后一直想环形转成线形要怎么做...

看题解.

可以考虑成 k 个区间 每个区间的和都为 0 那么 需要 n-k次

只要 k 最大

暴力算前缀和,如果碰到一次前缀和相等的,就说明中间那一段为 0 了

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<map>
 6 using namespace std;
 7 
 8 typedef long long LL;
 9 int n;
10 const int maxn = 1e6+5;
11 map<long long,int> h;
12 int a[maxn];
13 
14 int main(){
15     while(scanf("%d",&n) != EOF){
16         int x;
17         h.clear();
18         LL pre = 0LL;
19         int ans = 0;
20         for(int i = 1;i <= n;i++){
21             scanf("%d",&a[i]);
22             pre += 1LL*a[i];
23             h[pre]++;
24             ans = max(ans,h[pre]);
25         }
26         printf("%d\n",n-ans);
27     }
28     return 0;
29 }
View Code

 

第十二周 5.16 --- 5.22

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/5503615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!