• UVA10194 Football (aka Soccer)


    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1135

    好繁琐的一道模拟题 细节很重要 编译错误一次  把字符串结尾写错WA一次 多了getchar()WA一次 多了以空格PE一次 最后AC...3个多小时

    用了一下map map还是很方便的

    View Code
      1 #include <iostream>
      2 #include<map>
      3 #include<stdio.h>
      4 #include<string>
      5 #include<string.h>
      6 #include<stdlib.h>
      7 using namespace std;
      8 typedef struct node
      9 {
     10     int a,b,c,d,e,f,g,h,i;
     11     char j[31];
     12     node()
     13     {
     14         a = 0;
     15         b = 0;
     16         c = 0;
     17         d = 0;
     18         e = 0;
     19         f = 0;
     20         g = 0;
     21         h = 0;
     22         i = 0;
     23     }
     24 }st;
     25 map <string, int> ff;
     26 int cmp(const void *x,const void *y)
     27 {
     28     if(((st *)x)->b!=((st *)y)->b)
     29     return ((st *)y)->b-((st *)x)->b;
     30     else
     31     if(((st *)x)->d!=((st *)y)->d)
     32     return (((st *)y)->d-((st *)x)->d);
     33     else
     34     if(((st *)x)->g!=((st *)y)->g)
     35     return (((st *)y)->g-((st *)x)->g);
     36     else
     37     if(((st *)x)->h!=((st *)y)->h)
     38     return (((st *)y)->h-((st *)x)->h);
     39     else
     40     if(((st *)x)->c!=((st *)y)->c)
     41     return (((st *)x)->c-((st *)y)->c);
     42     else
     43     return strcasecmp(((st *)x)->j,((st *)y)->j);
     44 
     45 }
     46 int main()
     47 {
     48     int n,t,k,i,j;
     49     char str[101],team[31][31],com[101],sw[101],cw[101],tw[101];
     50     cin>>n;
     51     getchar();
     52     while(n--)
     53     {
     54         st q[101];
     55         gets(str);
     56         cin>>t;
     57         getchar();
     58         ff.clear();
     59         for(i = 0; i < t ; i++)
     60         {
     61             gets(team[i]);
     62             ff[team[i]] = i;
     63             strcpy(q[ff[team[i]]].j,team[i]);
     64         }
     65         cin>>k;
     66         getchar();
     67         while(k--)
     68         {
     69             gets(com);
     70             int temp;
     71             for(i = 0 ; i < strlen(com) ; i++)
     72             {
     73                 if(com[i]!='#')
     74                 sw[i]=com[i];
     75                 else
     76                 {
     77                     temp = i;
     78                     break;
     79                 }
     80             }
     81             sw[temp] = '\0';
     82             q[ff[sw]].c++;
     83             int o1 = 0,o2 = 0;
     84             for(i = temp+1 ; i < strlen(com) ; i++)
     85             {
     86                 if(com[i]!='@')
     87                 tw[o1++] = com[i];
     88                 else
     89                 {
     90                     temp = i;
     91                     break;
     92                 }
     93             }
     94             tw[o1] = '\0';
     95             o1 = atoi(tw);
     96             for(i = temp+1 ; i < strlen(com) ; i++)
     97             {
     98                 if(com[i]!='#')
     99                 tw[o2++] = com[i];
    100                 else
    101                 {
    102                     temp = i;
    103                     break;
    104                 }
    105             }
    106             tw[o2] = '\0';
    107             o2 = atoi(tw);
    108             int o3 = 0;
    109             for(i = temp+1; i < strlen(com) ; i++)
    110             cw[o3++] = com[i];
    111             cw[o3]='\0';
    112             q[ff[cw]].c++;
    113             q[ff[sw]].h += o1;
    114             q[ff[sw]].i += o2;
    115             q[ff[cw]].h += o2;
    116             q[ff[cw]].i += o1;
    117             if(o2>o1)
    118             {
    119                 q[ff[cw]].d++;
    120                 q[ff[sw]].f++;
    121                 q[ff[cw]].b+=3;
    122             }
    123             else
    124             if(o2<o1)
    125             {
    126                 q[ff[sw]].d++;
    127                 q[ff[cw]].f++;
    128                 q[ff[sw]].b+=3;
    129             }
    130             else
    131             {
    132                 q[ff[sw]].e++;
    133                 q[ff[cw]].e++;
    134                 q[ff[sw]].b++;
    135                 q[ff[cw]].b++;
    136             }
    137         }
    138         cout<<str<<endl;
    139         for(i = 0 ; i < t ; i++)
    140         q[i].g = q[i].h-q[i].i;
    141         qsort((void *)q,t,sizeof(q[0]),cmp);
    142         for(i = 0 ; i < t ; i++)
    143         {
    144             cout<<i+1<<") "<<q[i].j<<" "<<q[i].b<<"p, "<<q[i].c<<"g ("<<q[i].d<<"-"<<q[i].e<<"-"<<q[i].f<<"), "<<q[i].h-q[i].i<<"gd ("<<q[i].h<<"-"<<q[i].i<<")"<<endl;
    145         }
    146 
    147         if(n!=0)
    148         puts("");
    149     }
    150     return 0;
    151 }
  • 相关阅读:
    修改 markdown 二级标题的编号 自动编号 autoNumber.js nodejs
    摆脱鼠标系列 百度搜索 火柴 快捷键 Ctrl两次
    代码片段管理软件 发现 utools 这个工具还行 windows软件
    java 携带session 前台传递cookie 跨域解决方案 vue + java
    用nodejs 调用 博客园 MetaWeblog,获取自己全部列表标题
    利用 油猴脚本 每日填日志
    Vue.prototype.$app = this vscode ctrl 点击 不跳转
    vscode 切换主侧栏可见性 原Ctrl+B 我改为了 Alt+P
    vscode 快速切换窗口 快捷键 设置成 Alt + Q 了
    snipaste 截屏工具快捷键 alt + A 还有 Ctrl + Shift + A
  • 原文地址:https://www.cnblogs.com/shangyu/p/2607813.html
Copyright © 2020-2023  润新知