题目链接:点击查看

题目大意:模拟ACM赛制下每个队伍的排名,中文题面,不多赘述,规则在原题中讲的很清楚了

题目分析:直接模拟即可。。一点坑都没有,我是因为sort忘记调用cmp函数然后WA了一晚上,哭了,细节决定成败呜呜呜

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=110;struct Problem
{bool AC;//是否ACint waste;//罚时int cnt_waste;//错误次数int time;//AC时间void cal()//AC后计算内部的数值{cnt_waste++;AC=true;waste+=time;}
};struct Node
{string name;//姓名(其实赋个值当构造函数用了,不然怕map里不给存)Problem problem[20];//每个题目int time;//总罚时int cnt_AC;//AC数int rank;//排名bool operator<(const Node& a)const//重载小于号用于排序{if(cnt_AC!=a.cnt_AC)return cnt_AC>a.cnt_AC;return time<a.time;}bool operator==(const Node& a)const//重载等于号用于排序和rank更新{return cnt_AC==a.cnt_AC&&time==a.time;}
};unordered_map<string,Node>mp;//维护整体的容器bool cmp(pair<string,Node>a,pair<string,Node>b)//排序
{if(a.second==b.second)return a.first<b.first;return a.second<b.second;
}int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){mp.clear();//记得初始化int n,m;cin>>n>>m;for(int i=1;i<=m;i++)//读入姓名,当初始化了{string s;cin>>s;mp[s].name=s;}int t;cin>>t;while(t--){string name;//姓名int time;//提交时间string pos;//题目string state;//状态cin>>name>>time>>pos>>state;if(state=="Compilation-Error"||mp[name].problem[pos[0]-'A'].AC)//编译错误或者已经ACcontinue;else if(state=="Accepted")//AC{mp[name].problem[pos[0]-'A'].time=time;mp[name].problem[pos[0]-'A'].cal();mp[name].time+=mp[name].problem[pos[0]-'A'].waste;mp[name].cnt_AC++;}else//WA{mp[name].problem[pos[0]-'A'].waste+=20;mp[name].problem[pos[0]-'A'].cnt_waste++;}}vector<pair<string,Node>>v;copy(mp.begin(),mp.end(),back_inserter(v));//把map扔进vector里方便排序sort(v.begin(),v.end(),cmp);//排序v[0].second.rank=1;for(int i=1;i<v.size();i++)//更新rank{if(v[i].second==v[i-1].second)v[i].second.rank=v[i-1].second.rank;elsev[i].second.rank=i+1;}for(int i=0;i<v.size();i++)//输出答案{printf("%d %s %d %d",v[i].second.rank,v[i].first.c_str(),v[i].second.cnt_AC,v[i].second.time);for(int j=0;j<n;j++){printf(" %c%d",v[i].second.problem[j].AC?'+':'-',v[i].second.problem[j].cnt_waste);if(v[i].second.problem[j].AC)printf("(%d)",v[i].second.problem[j].time);}printf("\n");}if(w)printf("\n");}return 0;
}

牛客 - 排序(模拟)相关推荐

  1. 牛客 - 排序子序列

    牛客 解题思路:  在输入数据的序列中,两两进行比较: ①  a[i+1]>a[i] ,则进入非递增序列判断,直到遍历到下一个值不大于等于为止count++,然后进行下一位置的判断.       ...

  2. 【牛客NOIP模拟】牛半仙的魔塔(增强版)【贪心】【并查集】

    题意:一个魔塔游戏的地图是一棵以 111 为根的树,起点为根,除根外每个结点有一个怪物,给定每个怪物血量.攻击.防御.奖励蓝宝石个数(加防御),勇士的血量.攻击.防御,遇到怪物必须战斗,勇士永远先手, ...

  3. java牛客排序算法题_《剑指offer》面试题28:字符串的排列(牛客网版本) java...

    输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入一个字符 ...

  4. 牛客网模拟笔试——庆祝61(JavaScript)

    牛家庄幼儿园为庆祝61儿童节举办庆祝活动,庆祝活动中有一个节目是小朋友们围成一个圆圈跳舞.牛老师挑选出n个小朋友参与跳舞节目,已知每个小朋友的身高h_i.为了让舞蹈看起来和谐,牛老师需要让跳舞的圆圈队 ...

  5. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】

    题意: n×mn\times mn×m 的网格图,每个点有两个权值 vali,j,bufi,jval_{i,j},buf_{i,j}vali,j​,bufi,j​,从 (1,1)(1,1)(1,1) ...

  6. 【牛客NOIP模拟】牛半仙的妹子序列【DP】【Segment Tree Beats】

    题意:排列的极长上升子序列个数 n≤2×105n\leq 2\times 10^5n≤2×105 显然有个 dp fn=∑i<n,pi<pn,∄i<j<ns.t. pi< ...

  7. 【牛客NOIP模拟】路径难题【建图】【最短路证明】

    题意:一张 nnn 个点 mmm 条边的无向图,边带距离,可以坐出租车,花费为距离除以常数 rrr 向上取整:也可以坐公交车,每路车行驶路线给定,无论坐多少站花费都为 cic_ici​ (每路车可能不 ...

  8. 牛客网模拟笔试——黑化的牛牛(JavaScript)

    牛牛变得黑化了,想要摧毁掉地球.但他忘记了开启地球毁灭器的密码.牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码. 如样例所示S = &q ...

  9. 牛客网模拟笔试——膨胀的牛牛(JavaScript)

    牛牛以草料为食.牛牛有一天依次遇到n堆被施展了魔法的草料,牛牛只要遇到一堆跟他当前相同大小的草料,它就会把草料吃完,而使自己的大小膨胀一倍.一开始牛牛的大小的是A,然后给出牛牛依次遇到的n堆草料的大小 ...

最新文章

  1. python学习_22(文件)
  2. php oauth 服务端,OAuth 2.0 PHP客户端和服务器示例
  3. hive中,向map类型插入数据时,需要str_to_map一下
  4. 模式对话框与非模式对话框的区别
  5. superset云主机上出现报错
  6. 自定义头文件 No such file or directory
  7. 2019支持c99吗_德国LYNX携手北京十方融科科技有限公司成功中标2019年中国联通北京市分公司4K超高清视频信号传输设备购置项目...
  8. Java中的序列化问题
  9. YOLO系列专题——YOLOv1理论篇
  10. C语言10个经典小程序——小白必备!
  11. PLC编程需注意的地方
  12. Labview调用python
  13. MD5加密不可逆的原因
  14. 软件测试行业用mac好还是win好,为了在Mac上也能用好Windows,我做了这些调整
  15. 记录破解某网站 php代码 加密
  16. bmp批量转换jpg的方法
  17. 一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
  18. 小试牛刀:使用EasyPaintToolSAI来制作动漫图片
  19. SpringBoot 文件上传 基于MD5 文件内容校验工具类
  20. 源IP源MAC目的IP目的MAC,在整个网络中的变化

热门文章

  1. 新增字段赋值_微服务】155:商品新增业务(完)
  2. Nginx的rewrite案例之防盗链
  3. 织入业务代码-LogAspect
  4. Spring 的前世今生
  5. 高仿真 JDK Proxy手写实现
  6. Redis中缓存Lua 脚本
  7. Spring编程模型:Spring实现了哪些编程模型?
  8. ES6新特性之map和reduce方法的使用
  9. 枚举类 - Java面向对象编程
  10. spring的aop名词解释