• pta天梯赛训练 7-10 抢红包(25分)


    没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。

    输入格式:
    输入第一行给出一个正整数N(≤10
    4
    ),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:

    KN
    1

    P
    1

    ⋯N
    K

    P
    K

    其中K(0≤K≤20)是发出去的红包个数,N
    i

    是抢到红包的人的编号,P
    i

    (>0)是其抢到的红包金额(以分为单位)。注意:对于同一个人发出的红包,每人最多只能抢1次,不能重复抢。

    输出格式:
    按照收入金额从高到低的递减顺序输出每个人的编号和收入金额(以元为单位,输出小数点后2位)。每个人的信息占一行,两数字间有1个空格。如果收入金额有并列,则按抢到红包的个数递减输出;如果还有并列,则按个人编号递增输出。

    输入样例:
    10
    3 2 22 10 58 8 125
    5 1 345 3 211 5 233 7 13 8 101
    1 7 8800
    2 1 1000 2 1000
    2 4 250 10 320
    6 5 11 9 22 8 33 7 44 10 55 4 2
    1 3 8800
    2 1 23 2 123
    1 8 250
    4 2 121 4 516 7 112 9 10
    输出样例:
    1 11.63
    2 3.63
    8 3.63
    3 2.11
    7 1.69
    6 -1.67
    9 -2.18
    10 -3.26
    5 -3.26
    4 -12.32
    代码长度限制
    16 KB
    时间限制
    600 ms
    内存限制
    64 MB
    思路:简单模拟

    #include
    using namespace std;
    const int N=1e4;
    struct ax{
        int g=0,r=0;
        int qian=0;
    }a[N];
    bool cmp(ax x,ax y){
        if(x.qian!=y.qian){
            return x.qian>y.qian;
        }else{
            if(x.g!=y.g){
                return x.g>y.g;
            }else{
                return x.r<y.r;
            }
        }
    }
    void solve(int k){
        a[k].r=k;
        int bao,qia,sum=0;
        cin>>bao;
        int man;
        for(int i=1;i<=bao;i++){
            cin>>man>>qia;
            a[man].qian+=qia;
            a[man].g++;
            sum+=qia;
        }
        a[k].qian-=sum;
    }
    int main(void){
        int k;
        cin>>k;
        for(int i=1;i<=k;i++){
            solve(i);
        }
        sort(a+1,a+k+1,cmp);
        for(int i=1;i<=k;i++){
           printf("%d %.2lf\n",a[i].r,(double)a[i].qian/100);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    Beyond Compare 4 30天评估到期 解决方法
    C++ 算法学习 之 vector assign
    【MultiOTP】Docker安裝MultiOTP, 让Windows登入更安全(MFA)
    通用监控视频web播放方案
    interface中的clocking
    关于redis客户端lettuce连接被服务器端关闭而造成连接重置导致操作失败的问题
    创建定时任务——crontab的使用
    customRef
    RabbitMQ介绍篇(一)
    泛微OA表说明
  • 原文地址:https://blog.csdn.net/qq_60775360/article/details/128146144