PAT甲题题解-1075. PAT Judge (25)-排序
相当于是模拟OJ评测,这里注意最后输出:
1.那些所有提交结果都是-1的(即均未通过编译器的),或者从没有一次提交过的用户,不需要输出。
2.提交结果为-1的题目,最后输出分数是0
3.某个题目从没有提交过的,输出'-'
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <string.h>
- #include <cmath>
- #include <queue>
- #define INF 0x3f3f3f3f
- using namespace std;
- const int maxn=+;
- int problem[];
- struct User{
- int id;
- int score=;
- int problem[]={-,-,-,-,-,-};
- int submitted[]={,,,,,}; //标记题目是否有提交,没提交的对应的就要输出'-'
- int perfect=; //拿满分的题目个数
- int ranks=INF;
- int isShow=; //用于标记是否要输出,即用户只要有一题通过编译器,不管是否为0,设置为1.
- bool operator<(const User tmp)const{
- if(ranks==tmp.ranks){
- if(perfect==tmp.perfect){
- return id<tmp.id;
- }
- else{
- return perfect>tmp.perfect;
- }
- }
- else{
- return ranks<tmp.ranks;
- }
- }
- }user[maxn];
- bool cmp1(User a, User b){
- return a.score>b.score;
- }
- bool cmp2(User a,User b){
- if(a.ranks==b.ranks){
- if(a.perfect==b.perfect){
- return a.id<b.id;
- }
- else{
- return a.perfect>b.perfect;
- }
- }
- else{
- return a.ranks<b.ranks;
- }
- }
- int main()
- {
- int N,K,M;
- int id,pid,score;
- scanf("%d %d %d",&N,&K,&M);
- for(int i=;i<=K;i++){
- scanf("%d",&problem[i]);
- }
- for(int i=;i<M;i++){
- scanf("%d %d %d",&id,&pid,&score);
- user[id].id=id;
- user[id].problem[pid]=max(user[id].problem[pid],score);
- user[id].submitted[pid]=;
- //if(score==problem[pid])
- // user[id].perfect++; //不能这里就统计拿满分的题目个数,因为可能存在多次提交
- if(score!=-)
- user[id].isShow=;
- }
- for(int i=;i<=N;i++){
- for(int j=;j<=K;j++){
- if(user[i].problem[j]!=-)
- user[i].score+=user[i].problem[j];
- if(user[i].problem[j]==problem[j])
- user[i].perfect++;
- }
- }
- sort(user+,user+N+,cmp1);
- int cnt=;
- int lastid=;
- user[].ranks=cnt;
- user[].score=-;
- for(int i=;i<=N;i++){
- user[i].ranks=i;
- if(i!= && user[i].score==user[i-].score)
- user[i].ranks=user[i-].ranks;
- }
- sort(user+,user+N+,cmp2);
- for(int i=;i<=N;i++){
- if(user[i].isShow==)
- continue;
- printf("%d %05d %d",user[i].ranks,user[i].id,user[i].score);
- for(int j=;j<=K;j++){
- if(user[i].submitted[j]==){
- printf(" -");
- }
- else{
- if(user[i].problem[j]!=-)
- printf(" %d",user[i].problem[j]);
- else
- printf("");
- }
- }
- printf("\n");
- }
- return ;
- }
PAT甲题题解-1075. PAT Judge (25)-排序的更多相关文章
- PAT甲题题解-1129. Recommendation System (25)-排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789819.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1051. Pop Sequence (25)-堆栈
将1~n压入最多为m元素的栈 给出k个出栈序列,问你是否能够实现. 能输出YES 否则NO 模拟一遍即可,水题. #include <iostream> #include <cstd ...
- PAT甲题题解-1059. Prime Factors (25)-素数筛选法
用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...
- PAT甲题题解-1101. Quick Sort (25)-大水题
快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着 ...
- PAT甲题题解-1117. Eddington Number(25)-(大么个大水题~)
如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> ...
- PAT甲题题解-1130. Infix Expression (25)-中序遍历
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789828.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1021. Deepest Root (25)-dfs+并查集
dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...
- PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...
随机推荐
- [luogu T71973]卡常者π酱
[luogu T71973]卡常者π酱 题意 给定一个长度为 \(n\) 的字符串, 要求将字符串分割为若干段, 每一段要么是一个字符要么是前面几段的并的子串. 如果某一段是一个单独字符, 则产生 \ ...
- [ML学习笔记] 回归分析(Regression Analysis)
[ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...
- [工具]StarUML
前些日子整理文档,需要补充程序结构流程图,一直没有想到怎么样能够清晰直观描述清楚现在的解决方法,直到我知道了 UML 语言.最早对于 UML 的了解也只是停留在一本书上,他们开发使用 UML 分解任务 ...
- yield协程
1.Generator Generator , 一种可以返回迭代器的生成器,当程序运行到yield的时候,当前程序就唤起协程记录上下文,然后主函数继续操作,当需要操作的时候,在通过迭代器的next重新 ...
- windows下mysql和linux下mysql主从配置
1. linux下mysql安装版本5.6 windows下mysql版本5.7 不要问我为什么版本不一致 就是想这么搞 2. linux为主服务器 windows为从服务器 3.找到li ...
- vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用
Docker vagrant提供了使用Docker作为provider(其他的provider有virtualBox.VMware\hyper-V等)的开箱即用支持.这允许你的开发环境由Docker容 ...
- zabbix 客户端添加自定义参数
0.zabbix客户端配置文件 server和serveractive都需要配置 1.配置自定义参数脚本文件 zabbix_agent.conf中UserParameter字段,可以配置多行 User ...
- WorldWind源码剖析系列:表面瓦片类SurfaceTile
表面瓦片类SurfaceTile描述星球类(如地球)表面纹理影像的瓦片模型.其类图如下. 表面瓦片类SurfaceTile包含的主要的字段.属性和方法如下: int m_Level;//该瓦片所属金字 ...
- 织梦提交表单(提交留言)前的js校验
第一种情况:页面有引入jq的 在form标签上加上id <form action="/plus/diy.php" enctype="multipart/form-d ...
- Python2.7-fileinput
fileinput 模块,对输入的文件流进行迭代操作,可以说是对 open() 的一个扩展,它可以直接修改文件,也可以对他们进行备份 模块方法: fileinput.input([files[, in ...