csu oj 1339: 最后一滴血
2013-08-20 19:59
316 查看
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339
Submit: 319 Solved: 142
[Submit][Status][Web Board]
也许我们还可以设一个LB(Last Blood,最后一滴血)奖,奖给最后一个解出某题的队伍。注意:你不能先提交程序,得到Yes之后等比赛快结束时把它再交一遍,因为一旦一只队伍解出了某题,它对该题的所有后续提交都会被忽略。所有有本事的话,应该是写完程序以后先不交,等到比赛快结束时才交。当然,这样做浪费了很多罚时并且还有WA的风险,所以LB奖才显得有趣。
输入一场比赛中所有提交和对应的结果,输出每道题的LB奖得主。
用一个数组结构体存储做对该题目的队伍的ID和时间,然后比较找出最后一个提交的队伍和时间。
AC代码:
View Code
1339: 最后一滴血
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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代码:
#include <stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <string> #include <math.h> #include <stdlib.h> #include <queue> #include <stack> #include <set> #include <map> #include <list> #include <iomanip> #include <vector> #pragma comment(linker, "/STACK:1024000000,1024000000") #pragma warning(disable:4786) using namespace std; const int INF = 0x3f3f3f3f; const int MAX = 1000 + 10; const double eps = 1e-8; const double PI = acos(-1.0); struct T { int time , id; char a , s[5]; }p[1001]; struct T1 { int time , id; }f[15]; int main() { int n , t , m , i , l , ll , maxn = 0 , ff[105][15]; scanf("%d %d %d",&n , &t , &m); memset(ff , 0 , sizeof(ff)); for(i = 1;i <= n;i ++) f[i].time = -1; for(i = 0;i < m;i ++) { scanf("%d %d %c %s",&p[i].time , &p[i].id , &p[i].a , p[i].s); l = p[i].a - 'A' + 1; ll = p[i].id; if(l > maxn) maxn = l; if(strcmp(p[i].s , "Yes") == 0) { ff[ll][l] ++; if(ff[ll][l] == 1 && p[i].time >= f[l].time) { f[l].time = p[i].time; f[l].id = p[i].id; } ff[ll][l] ++; } } for(i = 1;i <= maxn;i ++) { if(f[i].time == -1) printf("%c - -\n",i - 1 + 'A'); else printf("%c %d %d\n", i - 1 + 'A' , f[i].time , f[i].id); } return 0; }
View Code
相关文章推荐
- csuoj 1339 最后一滴血
- csu-1339: 最后一滴血
- CSU 1339 最后一滴血 (简单模拟)
- CSU 1339: 最后一滴血(模拟啊 湖南省第九届大学生计算机程序设计竞赛)
- CSU 1339 最后一滴血
- CSUOJ 1587 爬楼梯
- csuoj1023修路( )
- CSUOJ - 1592石子归并(区间DP)
- ACM判题“服务器”(九度OJ 1339)
- CSUOJ 2031 Barareh on Fire
- CSU oj 2092-Space Golf
- CSUOJ 1635 Restaurant Ratings
- csuoj1303(将循环小数转化为分数)
- CSU OJ 1111 三家人 (湖南省第八届大学生计算机程序设计竞赛)
- csuoj1812: 三角形和矩形
- CSUOJ 1259 跳跳
- Stock Wave+csuoj+简单dp
- CSUOJ 1726 你经历过绝望吗?两次!BFS+优先队列
- CSUOJ 1197- Staginner 买葡萄
- CSUOJ 1010: Water Drinking