zoukankan      html  css  js  c++  java
  • BZOJ 1045 环形均分纸牌

    环形均分纸牌,数学推导不是很难。

    只给提示:设p[i]表示第i个人给第i+1个人的纸牌数,若p[i]<0表示,第i+1个人给第i个人的纸牌数

    然后自己推吧~

    View Code
     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdlib>
     4 #include <cstdio>
     5 #include <algorithm>
     6 #include <cmath>
     7 
     8 #define N 2000000
     9 
    10 using namespace std;
    11 
    12 long long can[N],qz[N],c[N],s,sum,ans;
    13 int n;
    14 
    15 inline void go()
    16 {
    17     scanf("%d",&n);
    18     for(int i=1;i<=n;i++)
    19     {
    20         scanf("%lld",&can[i]);
    21         sum+=can[i];
    22     }
    23     s=sum/n;
    24     for(int i=2;i<=n;i++) c[i]=can[i-1]-s;
    25     c[1]=0;
    26     for(int i=2;i<=n;i++) c[i]+=c[i-1]; 
    27     sort(c+1,c+1+n);
    28     s=c[(n+1)>>1];
    29     for(int i=1;i<=n;i++) ans+=abs(c[i]-s);
    30     printf("%lld\n",ans);
    31 }
    32 
    33 int main()
    34 {
    35     go();
    36     return 0;
    37 }
  • 相关阅读:
    os模块
    sys模块
    psutil模块
    subprocess模块
    time模块
    argparse模块
    tcp端口扫描(python多线程)
    基于http的软件仓库
    SRE思想
    redis哨兵模式
  • 原文地址:https://www.cnblogs.com/proverbs/p/2865077.html
Copyright © 2011-2022 走看看