Programming Contest Ranking(题解)
Programming Contest Ranking
.
题目描述
Heilongjiang Programming Contest will end successfully! And your task is programming contest ranking.
The following rules rankings:
1. A problem is solved when it is accepted by the judges.
2. Teams are ranked according to the most problems solved;
3. Teams who solve the same number of problems are ranked by least total time. The total time is the sum of the time consumed for each problem solved. The time consumed for a solved problem is the time elapsed from the beginning of the contest to the submittal
of the accepted run plus 20 penalty minutes for every rejected run for that problem regardless of submittal time. Team(s) who firstly solved the problem will have no penalty in the problem. There is no time consumed for a problem that is not solved.
4. Teams who are the same number of problems solved and the same total time are ranked by the most weighting number of problems solved;The weight of the i-th problem is the floor of N/Ci. where N is the number of all teams, and Ci is the number of teams
who solved the i-th problem. The weight of one problem will be 0 if there is no team solved the problem.
输入
The input contains multiple test cases. For each test case,first line contains two integers,N and M,N (1 < N <=200) is the number of all teams,M (6 <= M <=20) is the number of problems;
Then following N lines, there are M+1 items seprated by a space in each.line, corresponding the record of one team . The first item is the name of the team, not exceed 20 letters. Then following M items, each item is:
1. -\- if the team did not submit for the problem;
2. TT\- if the team submitted TT times for the problem,but did not solve it.
3. TT\FT if the team submitted TT times for the problem, FT is the time elapsed from the beginning of the contest to the submittal of the accepted.
1 <= TT <= 32, 1 <= FT<=300, Both TT and FT are integer.
输出
Output ranking result in N lines.
The format of each line is:
Rank (width 3)
Name of team (width 20)
Number of problems solved (width 2)
Total time(width 6)
Weighting Number of problems solved (width 4)
Each item above align right, seprated by a space.
样例输入
6 6
Leifeng 8\135 1\20 1\57 5\230 6\- 3\283
Fighter 7\136 1\15 1\42 6\200 5\- 2\270
AlwaysAK 7\156 1\24 1\31 5\202 5\270 4\-
SoyOnceMore 5\- 6\- 3\- 2\75 -\- -\-
RpRpRp 5\- 3\35 10\- -\- -\- -\-
StartAcm 2\- 3\- 3\- 4\- 1\- -\-
样例输出
1 Leifeng 5 845 9
2 AlwaysAK 5 883 12
3 Fighter 5 883 9
4 RpRpRp 1 75 1
4 SoyOnceMore 1 75 1
6 StartAcm 0 0 0
提示
In the sample, though team Leifeng submitted 8 times for problem A, but they firstly solved problem A, so the time consumed of problem A is 135, not 275.
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int n,m;
struct timu{
int zhuang;
int wa;
int time;
};
struct date {
char name[50];
int sumtime;
int quan;
int sumt;
struct timu pro[100];
}line[1000];
void ff(int x,int p,char ch[])
{
int i,j;
int y=0;
int m=0;
for(i=0;ch[i]!='\0';i++){
if(ch[i]=='\\'){
line[x].pro[p].wa=m;
m=0;
}else if(ch[i]=='-')
{
line[x].pro[p].zhuang=0;
line[x].pro[p].time=0;
return ;
}else
{
m=m*10+ch[i]-'0';
}
}
line[x].pro[p].zhuang=1;
line[x].pro[p].time=m;//(line[x].pro[p].wa-1)*20
//printf("==>> %s %d---%d\n",ch,line[x].pro[p].wa,line[x].pro[p].time);
}
int cmp (date a,date b)
{
if(a.sumt!=b.sumt)
return a.sumt>b.sumt;
else if(a.sumtime!=b.sumtime)
return a.sumtime<b.sumtime;
else if(a.quan!=b.quan)
return a.quan>b.quan;
else return strcmp(a.name,b.name)<0;
}
int main()
{
int vis[100];
int i,j,sum,num,minn,k;
char ch[100];
while(~scanf("%d %d",&n,&m)){
memset(line,0,sizeof(line));
memset(vis,0,sizeof(vis));
for(i=0;i<n;i++){
scanf("%s",line[i].name);
for(j=0;j<m;j++){
scanf("%s",ch);
ff(i,j,ch);
}
}
for(j=0;j<m;j++){
k=-1;
minn=inf;
for(i=0;i<n;i++){
if(line[i].pro[j].zhuang)
vis[j]++;
if(line[i].pro[j].zhuang!=0&&line[i].pro[j].time<minn){
minn=line[i].pro[j].time;
k=i;
}
}
if(k!=-1){
line[k].pro[j].wa=1;
}
}
//geng xin quan zhi
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(line[i].pro[j].zhuang){
if(vis[j])
line[i].quan+=n/vis[j];
line[i].sumt++;
line[i].sumtime+=line[i].pro[j].time+(line[i].pro[j].wa-1)*20;
}
}
}
k=0;
sort(line,line+n,cmp);
for(i=0;i<n;i++){
if(i!=0&&line[i].sumt==line[i-1].sumt&&line[i].sumtime==line[i-1].sumtime&&line[i].quan==line[i-1].quan)
{
printf("%3d",k+1);
}else {
printf("%3d",i+1);
k=i;
}
printf(" %20s",line[i].name);
printf(" %2d %6d %4d\n",line[i].sumt,line[i].sumtime,line[i].quan);
}
}
return 0;
}
Programming Contest Ranking(题解)的更多相关文章
- M-SOLUTIONS Programming Contest 2020 题解
M-SOLUTIONS Programming Contest 2020 题解 目录 M-SOLUTIONS Programming Contest 2020 题解 A - Kyu in AtCode ...
- atcoder Keyence Programming Contest 2020 题解
比赛地址 A 题意:给一个\(n*m\)的初始为白色的矩阵,一次操作可以将一行或一列染成 黑色,问至少染出\(k\)个黑点的最少操作次数. \(n\),\(m\)<=100,\(k\)<= ...
- 【AtCoder】Dwango Programming Contest V题解
A - Thumbnail 题意简述:给出N个数,找出N个数中和这N个数平均值绝对值最小的数 根据题意写代码即可= = #include <bits/stdc++.h> #define f ...
- The 15th UESTC Programming Contest Preliminary K - Kidd1ng Me? cdoj1565
地址:http://acm.uestc.edu.cn/#/problem/show/1565 题目: Kidd1ng Me? Time Limit: 3000/1000MS (Java/Others) ...
- Gym 100952F&&2015 HIAST Collegiate Programming Contest F. Contestants Ranking【BFS+STL乱搞(map+vector)+优先队列】
F. Contestants Ranking time limit per test:1 second memory limit per test:24 megabytes input:standar ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5503 The 12th Zhejiang Provincial ...
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5504 The 12th Zhejiang Provincial ...
- 2016 Sichuan Province Programming Contest
2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...
随机推荐
- 基于bootstrap的后台管理系统
ace metro'nic 基于bootstrap的后台admin system ace [eis], 扑克牌中的A 表示 非常棒, 杰出, 顶好的... gallery: 画廊, 走廊; 在网页中常 ...
- Python 开发环境搭建
Python分别有两个大的版本,分别是2和3 下载地址:Python-3.6.2 Python-2.7.13 现在安装路径:D:\Program Files\Python 安装完成以后要安装 pi ...
- POJ 2373 Dividing the Path (单调队列优化DP)题解
思路: 设dp[i]为覆盖i所用的最小数量,那么dp[i] = min(dp[k] + 1),其中i - 2b <= k <= i -2a,所以可以手动开一个单调递增的队列,队首元素就是k ...
- Unity 之 图片显示的真实大小
图片放入Unity中自身的属性 在做帽子游戏的时候,看到这么一段代码 //获取保龄球的自身宽度 float ballWidth=ball.GetComponent<Renderer>(). ...
- Spring batch的学习
Spring batch是用来处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定处理后输出成指定的形式. Spring batch主要有以下部分组成: JobRepository ...
- 圆点博士 陀螺仪和加速度计MPU6050的单位换算方法
圆点博士陀螺仪和加速度计MPU6050的单位换算方法 陀螺仪和加速度计MPU6050的单位换算方法 对于四轴的初学者,可能无法理解四轴源代码里面陀螺仪和加速度数据的那些数学转换方法.下面我们来具体描述 ...
- WPF基础学习笔记整理 (一)
基础知识: WPF:Windows Presentation Foundation,用于Windows的现代图形显示系统: WPF用于编写应用程序的表示层: 引入“内置硬件加速”和“分辨率无关”: S ...
- json 保存
with open(mpath,"w") as k: dlist=[] for key in yaml_dict["data"]: dlist.append(y ...
- 转载:负载均衡器技术Nginx和F5的优缺点对比
https://blog.csdn.net/zxc456733/article/details/78861100 nginx(一) nginx详解 nginx是一个被广泛使用的集群架构组件,我们有必要 ...
- django QueryDict对象
类的原型:class QueryDict[source] 在HttpRequest对象中,GET和POST属性都是一个django.http.QueryDict的实例.也就是说你可以按本文下面提供的方 ...