zoukankan      html  css  js  c++  java
  • csu oj 1339: 最后一滴血

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339

    1339: 最后一滴血

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 319  Solved: 142
    [Submit][Status][Web Board]

    Description

    在ACM/ICPC这样的程序设计竞赛中,最早解出一道题称为抢到FB(First Blood,第一滴血)。现在ACM/ICPC世界总决赛甚至为每道题的FB设立了特别奖。

    也许我们还可以设一个LB(Last Blood,最后一滴血)奖,奖给最后一个解出某题的队伍。注意:你不能先提交程序,得到Yes之后等比赛快结束时把它再交一遍,因为一旦一只队伍解出了某题,它对该题的所有后续提交都会被忽略。所有有本事的话,应该是写完程序以后先不交,等到比赛快结束时才交。当然,这样做浪费了很多罚时并且还有WA的风险,所以LB奖才显得有趣。

    输入一场比赛中所有提交和对应的结果,输出每道题的LB奖得主。

    Input

    输入仅包含一组数据。第一行为题数n、队伍数t和提交数m(5<=n<=12, 10<=t<=100, 1<=m<=1000)。以下m行每行包含time(0~300之间的整数,单位:分钟), teamID(1~t), problem(A~L)和结果(Yes或者No)。提交按照时间从小到大排序,所以即使两个提交的time相同,也有先后顺序(可能只差几秒钟)。任意两个提交的时间都不会完全相同,因此LB奖要么空缺,要么有惟一的得主。

    Output

    对于每组数据,输出每道题目的LB奖得主的提交时间和teamID,格式见样例。

    Sample Input

    5 10 18
    0 2 B No
    11 2 B Yes
    20 3 A Yes
    35 8 E No
    40 8 E No
    45 7 E No
    50 10 A Yes
    100 4 A No
    120 6 B Yes
    160 2 E Yes
    180 2 A Yes
    210 3 B Yes
    240 10 B No
    250 10 B Yes
    270 2 B Yes
    295 8 E Yes
    295 7 E Yes
    299 10 D Yes
    

    Sample Output

    A 180 2
    B 250 10
    C - -
    D 299 10
    E 295 7
    

    HINT

    分析:

    用一个数组结构体存储做对该题目的队伍的ID和时间,然后比较找出最后一个提交的队伍和时间。

    AC代码:

     1 #include <stdio.h>
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <string.h>
     5 #include <string>
     6 #include <math.h>
     7 #include <stdlib.h>
     8 #include <queue>
     9 #include <stack>
    10 #include <set>
    11 #include <map>
    12 #include <list>
    13 #include <iomanip>
    14 #include <vector>
    15 #pragma comment(linker, "/STACK:1024000000,1024000000")
    16 #pragma warning(disable:4786)
    17 
    18 using namespace std;
    19 
    20 const int INF = 0x3f3f3f3f;
    21 const int MAX = 1000 + 10;
    22 const double eps = 1e-8;
    23 const double PI = acos(-1.0);
    24 
    25 struct T
    26 {
    27     int time , id;
    28     char a , s[5];
    29 }p[1001];
    30 
    31 struct T1
    32 {
    33     int time , id;
    34 }f[15];
    35 
    36 int main()
    37 {
    38     int n , t , m , i , l , ll , maxn = 0 , ff[105][15];
    39     scanf("%d %d %d",&n , &t , &m);
    40     memset(ff , 0 , sizeof(ff));
    41     for(i = 1;i <= n;i ++)
    42         f[i].time = -1;
    43     for(i = 0;i < m;i ++)
    44     {
    45         scanf("%d %d %c %s",&p[i].time , &p[i].id , &p[i].a , p[i].s);
    46         l = p[i].a - 'A' + 1;
    47         ll = p[i].id;
    48         if(l > maxn)
    49             maxn = l;
    50         if(strcmp(p[i].s , "Yes") == 0)
    51         {
    52             ff[ll][l] ++;
    53             if(ff[ll][l] == 1 && p[i].time >= f[l].time)
    54             {
    55                 f[l].time = p[i].time;
    56                 f[l].id = p[i].id;
    57             }
    58             ff[ll][l] ++;
    59         }
    60     }
    61     for(i = 1;i <= maxn;i ++)
    62     {
    63             if(f[i].time == -1)
    64                 printf("%c - -
    ",i - 1 + 'A');
    65             else
    66                 printf("%c %d %d
    ", i - 1 + 'A' , f[i].time , f[i].id);
    67     }
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    每天进步一点点--&gt;函数fseek() 使用方法
    几种更新(Update语句)查询的方法
    hibernate批量删除和更新数据
    Android ViewPager使用具体解释
    Linux curses库使用
    安装numpy、nltk问题汇总
    android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
    Eclipse中SVN的安装步骤(两种)和用法
    Intent用法
    Tomcat全攻略
  • 原文地址:https://www.cnblogs.com/jeff-wgc/p/4456485.html
Copyright © 2011-2022 走看看