zoukankan      html  css  js  c++  java
  • pat 抢红包

    L2-009. 抢红包

    时间限制
    300 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

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

    输入格式:

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

    K N1 P1 ... NK PK

    其中K(0 <= K <= 20)是发出去的红包个数,Ni是抢到红包的人的编号,Pi(> 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



    又是没好好看题目,“随后N行,第i行给出编号为i的人发红包的记录”,当时写的时候一直在纠结要怎么排序后,每个人的编号要怎么正确输出,真的是脑子没转过弯来啊啊。。
    其实只要每次输入的时候记录下编号,然后不断更新金额与收到的红包就可以了。 一边走,一边记录, 以后要好好读题 这很重要!!!
     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 struct tt{
     6     int nn;
     7     int count;
     8     int sum;
     9 }st[10010];
    10 bool cmp(tt a, tt b)
    11 {
    12     if(a.sum > b.sum) 
    13     {
    14         return true;
    15     }
    16     else if(a.sum == b.sum)
    17     {
    18         if(a.count > b.count)
    19         {
    20             return true;
    21         }
    22         else if(a.count == b.count)
    23         {
    24             if(a.nn < b.nn)
    25             {
    26                 return true;
    27             }
    28         }
    29     }
    30     return false;
    31 }
    32 int main()
    33 {
    34     int n, k, p, x, y;
    35     scanf("%d", &n);
    36     for(int i = 1; i <= n; i++)
    37     {
    38         st[i].count = 0;
    39         st[i].sum = 0;
    40     }
    41     for(int j = 1; j <= n; j++)
    42     {
    43         st[j].nn = j;
    44         scanf("%d", &k);
    45         for(int i = 0; i < k; i++)
    46         {
    47             scanf("%d %d", &x, &y);
    48             st[x].sum += y;    
    49             st[x].count++;
    50             st[j].sum -= y;
    51         }
    52     }    
    53     sort(st+1, st+n+1, cmp);
    54     for(int i = 1; i <= n; i++)
    55     {
    56         printf("%d %.2f
    ", st[i].nn, ((double)st[i].sum/100.0));
    57     }
    58     return 0;
    59 }
    View Code
    Just do what you want!
  • 相关阅读:
    javascript 正則表達式补充
    NOIP2010 引水入城
    [Elasticsearch] 集群的工作原理
    师傅快看!全国首个民间资本为主的物联网行业投融资平台诞生了!
    【解决】hive与hbase表结合级联查询的问题
    ssh2项目整合 struts2.1+hibernate3.3+spring3 基于hibernate注解和struts2注解
    Python网络爬虫(一):初步认识网络爬虫
    Android天气预报+百度天气接口
    《从零開始学Swift》学习笔记(Day 55)——使用try?和try!差别
    使用SQL Profile及SQL Tuning Advisor固定运行计划
  • 原文地址:https://www.cnblogs.com/shirley-0021/p/8660042.html
Copyright © 2011-2022 走看看