• Week2实验 B--爆零(❌)大力出奇迹(√) HDU


    题目描述:

    一些人在OJ上做题,给他们排名次。按AC题目数,罚时数,名字来排序

    样例输入:

    TT        120(3) 30    10(1) -3   0    47     21(2) -2
    OMRailgun 0      -99   -8    0    -666 -10086 0     -9999996

    思路和总结:

    主要是细节问题

    1、scanf可以直接按格式读入: scanf("%d(%d)",&x,&y)

    2、简单的if-else表达式可以用三目运算符代替,但是要注意加括号,因为优先级很迷,能节省代码量

    3、字符数组不能直接比较大小,可用string类,如此:strcpy(s,st.data()) 可把string对象st转换成字符数组s,或者是输出时直接用:st.c_str()。string.c_str()返回一个const char*

    4、scanf以%s读入时,即使缓冲区有空格和回车,也会直接忽略,直到遇到一个正常字符

    5、scanf以%d读入读到字符时,会停止返回0,而不是继续向后,比如scanf("%d",&a) 输入:a ,返回0,读入结束。

    代码:

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <string>
     4 #include <algorithm>
     5 #include <cstring>
     6 #include <iomanip>
     7 using namespace std;
     8 
     9 struct stu
    10 {
    11     string name;
    12     int num;
    13     int time;
    14     bool operator < (const stu &a) const
    15     {
    16         if(num!=a.num) return num>a.num;
    17         else if(time!=a.time) return time<a.time;
    18         else return name<a.name; 
    19     }
    20 };
    21 
    22 stu a[100005];
    23 int main()
    24 {
    25     //freopen("a.in","r",stdin);
    26     int n,m;
    27     cin>>n>>m;
    28     char s[100]={0};
    29     int tot=0;
    30     while( ~scanf("%s",s) )
    31     {
    32         tot++;
    33         a[tot].name=s;
    34         int num=0,time=0;
    35         int t1,t2;
    36         for(int i=1;i<=n;i++)
    37         {
    38             if( scanf("%d(%d)",&t1,&t2)==1 )  //这步是很妙的
    39                 num+= (t1>0) , time+= (t1>0) ? t1:0;  //这一步更绝妙 特别是num
    40             else
    41             {
    42                 num++;
    43                 time+=t1+t2*m;
    44             }
    45         }
    46         a[tot].num=num; a[tot].time=time;    
    47     }
    48     sort(a+1,a+tot+1);
    49     for(int i=1;i<=tot;i++)
    50     {
    51         char c[100]={0};
    52         strcpy(c,a[i].name.data());
    53         printf("%-10s %2d %4d
    ",c,a[i].num,a[i].time);    
    54     }
    55 }
  • 相关阅读:
    python变量和作用域
    模块
    装饰器
    转git取消commit
    RTP
    ffmpeg编译
    win7开启wifi
    LIVE555
    【FFmpeg】ffplay播放rtsp视频流花屏问题
    Windows下编译SDL
  • 原文地址:https://www.cnblogs.com/qingoba/p/12420652.html
Copyright © 2020-2023  润新知