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

均分纸牌问题

时间:2020-04-13 01:01:51      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:16px   main   sum   class   sort   turn   article   代码   using   

这位大佬写的博客介绍的很详细,通俗易懂

https://blog.csdn.net/qq_38930523/article/details/89888915

 

自己敲了一遍代码...

线性均分纸牌:

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 
 5 const int N=110;
 6 int a[N],s[N];
 7 
 8 int main(){
 9     int n;
10     cin>>n;
11     int sum=0;
12     for(int i=1;i<=n;i++){
13         scanf("%d",&a[i]);
14         sum+=a[i];
15     } 
16     
17     int ave=sum/n;
18     int ans=0;
19     for(int i=1;i<=n;i++){
20         a[i]-=ave;
21         s[i]=s[i-1]+a[i];
22         if(s[i]) ans++;
23     }
24     
25     cout<<ans;
26     
27     return 0;
28 } 

 

环形均分纸牌:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 const int N=1000010;
 6 int a[N],s[N];
 7 
 8 int main(){
 9     int n;
10     cin>>n;
11     long long sum=0;
12     for(int i=1;i<=n;i++){
13         cin>>a[i];
14         sum+=a[i];
15     }
16     
17     int ave=sum/n;
18     for(int i=1;i<=n;i++){
19         a[i]-=ave;
20         s[i]=s[i-1]+a[i];
21     }
22     sort(s+1,s+1+n);
23     int mid=(1+n)>>1;//取中位数
24     
25     long long cnt=0;
26     for(int i=1;i<=n;i++) cnt+=abs(s[i]-s[mid]);
27     
28     cout<<cnt;
29     
30     return 0;
31 }

 

均分纸牌问题

标签:16px   main   sum   class   sort   turn   article   代码   using   

原文地址:https://www.cnblogs.com/program-ai-cv-ml-se-fighting/p/12688628.html

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