2016年 河南工业大学校赛 A题.饶学妹的比赛

饶学妹的比赛

时间限制: 1 秒  内存限制: 64 MB  |  提交: 385  解决: 120

题目描述

饶学妹组织了一场ACM赛制的比赛,大家纷纷慕名来参加。比赛中大家交题只会有两种结果:AC,WA。比赛结束了,饶学妹制作榜单啦。首先按AC题目的数目(重复AC一道题只算一次)从多到少排名;AC题目数目相同的同学按罚时(罚时计算方式为:单题罚时 = (首次AC该题目时间 + 首次AC之前WA的次数 * 20) min,总罚时 = 各题罚时之和;即某题目AC之后,对这道题目后续的提交均不计入罚时)从少到多排列;AC数目相同且罚时也相同的同学,按编号从小往大排序。

输入

第一行为n,m,k(1≤n≤1000,1≤m≤10000,1≤k≤10),分别表示参加比赛的人数、提交总次数和总题数。

之后一行为n个用空格分隔的字符串,表示n位参赛选手的姓名(每个字符串长度均不超过20,且仅含小写字母);

之后m行,每行均为 Timei IDi PIDi Resulti,(1≤TimeiTimei+1≤300,1≤IDin,1≤PIDik,Resulti="AC"/"WA"),表示编号为IDi的选手在Timei时刻提交了编号为PIDi的题目,且结果为Resulti.

输出

输出n行,按排名从高到低排列。每行分别输出该选手的姓名,过题数,总罚时,中间均为一个空格间隔。

样例输入

5 11 10
phx lsf zk rqy ch
1 1 1 AC
1 1 2 AC
2 1 3 AC
2 1 4 AC
3 2 2 WA
4 2 2 AC
5 3 2 AC
10 5 1 WA
20 5 2 WA
30 5 3 WA
40 5 4 WA

样例输出

phx 4 6
zk 1 5
lsf 1 24
rqy 0 0
ch 0 0思路 : 按照 题意模拟一下  再排序就好了 , 注意 排序过程中 会打断 序号排序 , 需要显示 (按照序号)排序
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std ; 

#define maxn 2000
int n , m , k ;
struct node {
    char name[50] ;
    int order ;
    int AC_num  ;
    bool AC_visit[20] ;
    int WA_times[20] ;
    int time_sum  ;
};

node num[maxn] ; 

bool cmp(node a , node b){
    if(a.AC_num != b.AC_num){
        return  a.AC_num > b.AC_num ;
    }
    else if(a.time_sum!=b.time_sum){
        return a.time_sum<b.time_sum;
    } else return a.order < b.order ; 

}

int main(){
    int timei , idi , pidi  ;
    char result[10] ; 

    while(~scanf("%d %d %d" , &n , &m , &k)){
        for(int i=1 ; i<=n ; i++){
            num[i].AC_num = 0 ;
            memset(num[i].AC_visit , false , sizeof(num[i].AC_visit)) ;
            memset(num[i].WA_times , 0 ,sizeof(num[i].WA_times)) ;
            num[i].time_sum = 0 ;
        }

        for(int i=1 ; i<=n ; i++){
            scanf("%s" , num[i].name) ;
            num[i].order = i ;
        }

        for(int i=1 ; i<=m ; i++){
            scanf("%d %d %d %s" , &timei , &idi , &pidi , result) ;
            if(result[0] ==‘W‘){

                num[idi].WA_times[pidi] ++ ; 

            } else if(result[0] == ‘A‘ && !num[idi].AC_visit[pidi]){

                num[idi].AC_num ++ ;
                num[idi].time_sum += num[idi].WA_times[pidi] * 20 + timei ;
                num[idi].AC_visit[pidi] = true ; 

            }
        }

        sort(num+1 , num+1+n , cmp) ; 

        for(int i=1 ; i<=n ; i++){
            printf("%s %d %d\n" , num[i].name , num[i].AC_num , num[i].time_sum ) ;
        }
    }

    return 0 ;
} 
时间: 2024-10-12 16:37:27

2016年 河南工业大学校赛 A题.饶学妹的比赛的相关文章

2016年 河南工业大学校赛 H题.ch追妹

ch追妹 时间限制: 2 秒  内存限制: 128 MB  |  提交: 241  解决: 119 题目描述 n个点的一张无向图,ch站在a点,ch要追的妹子站在b点.r_clover为了让ch安心训练,要阻止ch追妹.ch每走一步,r_clover就会挖断一条路.ch和r_clover均采用最优策略,问ch能不能追到妹子 输入 第一行为数据组数T(T≤10). 每组数据的第一行为四个数 n,m,a,b(1≤a,b≤n≤20; 1≤m≤80),分别表示点数,边数,ch的位置,妹子的位置. 之后m

2016年 河南工业大学校赛 C题.魔法宝石

魔法宝石 时间限制: 2 秒  内存限制: 64 MB  |  提交: 582  解决: 187 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用两个宝石合成另一种宝石(不消耗魔力值).请你帮小s算出合成某种宝石的所需的最小花费. 输入 第一行为数据组数T(1≤T≤3). 对于每组数据,首先一行为n,m(1≤n,m≤10^5).分别表示魔法宝石种类数和合成魔法的数量. 之后一行n个数表示a1到an.(1≤ai≤10^9).a_i表示合成第i种宝石所需的魔

2016年 河南工业大学校赛 D题.rqy的键盘

rqy的键盘 时间限制: 1 秒  内存限制: 128 MB  |  提交: 233  解决: 136 题目描述 rqy在和妹子约会,突然女票打来电话.rqy骗女票他在写代码.女票为了证实,问他键盘上F键左边是哪个键. 你能否帮助rqy回应女票的质问?不然他可就要写思想汇报了... 输入 输入数据第一行是一个整数 T(1≤T≤10000),表示测试数据的组数. 之后每一行先是一个大写字母X ,之后为一个字符串Left或Right,分别表示询问X键的左边或右边是哪个键. 输出 如果结果为一个字母键

河工大玲珑校赛 饶学妹的比赛

饶学妹的比赛时间限制: 1 秒 内存限制: 64 MB提交: 363 解决: 116提交 状态 题目描述饶学妹组织了一场ACM赛制的比赛,大家纷纷慕名来参加.比赛中大家交题只会有两种结果:AC,WA.比赛结束了,饶学妹制作榜单啦.首先按AC题目的数目(重复AC一道题只算一次)从多到少排名:AC题目数目相同的同学按罚时(罚时计算方式为:单题罚时 = (首次AC该题目时间 + 首次AC之前WA的次数 * 20) min,总罚时 = 各题罚时之和:即某题目AC之后,对这道题目后续的提交均不计入罚时)从

2016广东工业大学校赛 E题 GDUT-oj1173

Problem E: 积木积水 Description 现有一堆边长为1的已经放置好的积木,小明(对的,你没看错,的确是陪伴我们成长的那个小明)想知道当下雨天来时会有多少积水.小明又是如此地喜欢二次元,于是他把这个三维的现实问题简化成二维的问题.设雨量无穷.积木不透水.积木间无缝连接,问在这个二次元的世界里,已放置好的积木会有多少单位的积水量? Input 第一行包含一个整数T(T≤100),表示接下来的测试样例个数. 每个测试样例有两行组成: 第一行包含一个整数N(N≤1e6),表示积木的列数

2016广东工业大学校赛 D题 GDUT-oj1172

Problem D: 二叉树的中序遍历 Description 对于学过数据结构的人来说,二叉树和二叉树上的中序遍历都是再简单不过的东西了.这道题就搞搞二叉树好了,当然,不是一般的二叉树:) 我们定义一种a二叉树,它的节点内容可以是任一个数字或者#,#只能作为叶子节点的内容. 如下就是一棵合法定义的a二叉树1: 再来一棵不合法的a二叉树2: (根节点的左儿子的内容是#,因此不应该有一个左儿子3) 对于a二叉树1,我们可以进行对他进行中序遍历,得到序列(1)#4112#37:对于a二叉树2,可以得

2016 acm香港网络赛 B题. Boxes

原题网址:https://open.kattis.com/problems/boxes Boxes There are N boxes, indexed by a number from 1 to N.Each box may (or not may not) be put into other boxes. These boxes together form a tree structure (or a forest structure, to be precise). You have to

2016 acm香港网络赛 C题. Classrooms(贪心)

原题网址:https://open.kattis.com/problems/classrooms Classrooms The new semester is about to begin, and finding classrooms for orientation activities is always a headache. There are k classrooms on campus and n proposed activities that need to be assigne

2016 acm香港网络赛 A题. A+B Problem (FFT)

原题地址:https://open.kattis.com/problems/aplusb FFT代码参考kuangbin的博客:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html A+B Problem Given N integers in the range [−50000,50000], how many ways are there to pick three integers ai, aj, ak, such