• 100197G Robbers


    传送门

    题目大意

    看式子懂题意系列...

    分析

    自然想到我们先按比例下取整得到一个值,再按每个人这样分配所产生的值从大到小排序,然后将剩下的几个金币自大到小每人分配一个,代码挺好理解的,详见代码。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    #define li long long
    #define pb push_back
    #define mp make_pair
    #define y1 y12345678909
    #define rii register int
    #define pii pair<int,int>
    #define r(x) scanf("%d",&x)
    #define ck(x) cout<<x<<endl;
    #define uli unsigned long long
    #define sp cout<<"---------------------------------------------------"<<endl
    struct node {
          int d,no;
    }a[110000];
    int ans[110000];
    inline bool cmp (const node x,const node y){
          return x.d<y.d;
    }
    int main(){
          freopen("input.txt","r",stdin);
          freopen("output.txt","w",stdout);
          int n,m,i,z,y,all,x;
          r(n),r(m),r(y);
          all=m;
          for(i=1;i<=n;i++){
              r(x);
            z=x*m;
            ans[i]+=z/y;
            all-=ans[i];
            z%=y;
            a[i].d=z;
            a[i].no=i;
          }
          sort(a+1,a+n+1,cmp);
          for(i=n-all+1;i<=n;i++)
            ans[a[i].no]++;
          for(i=1;i<=n;i++)
            printf("%d ",ans[i]);
          puts("");
          return 0;
    }
  • 相关阅读:
    C#第八节课
    C#第七节课
    C#第六节课
    supervisor进程管理的使用
    oracle分区表
    Zabbix配置邮件监控
    python连接oracle数据库
    json内存级非关系数据库
    Oracle 12c CDB PDB 安装/配置/管理
    Let's Encrypt免费泛域名证书申请
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9370176.html
Copyright © 2020-2023  润新知