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 ...
随机推荐
- ExtJS使用入门
extjs是基于 yui 由 jack slocum开发, sencha是他们的公司, sencha是由三个项目合并起来的开源项目: ExtJS, jqTouch, Raphael(拉斐尔, 圣经中的 ...
- SxsTrace
https://troubleshooter.xyz/wiki/fix-the-application-has-failed-to-start-because-the-side-by-side-con ...
- 51nod 1137 矩阵乘法
基本的矩阵乘法 中间for(int j=0;i<n;i++) //这里写错了 应该是j<n 晚上果然 效率不行 等会早点儿睡 //矩阵乘法 就是 两个矩阵 第一个矩阵的列 等与 第 ...
- 【TCP/IP详解 卷一:协议】TCP定时器 小结
前言 在有关TCP的章节中,介绍了四种定时器,它们体现了TCP的可靠性,其中最重要的 就是重传定时器了,剩下的定时器都是为了解决TCP的理解上的一些问题而设置的. 四种定时器: 2MSL定时器,出现在 ...
- 【Coursera】SecondWeek(2)
The First Two Packets on the Internet Leonard Kleinrock Kleinrock 是一名工程师和计算机科学家,他在APRANET网络中起到了至关重要的 ...
- Win7上安装WMware虚拟机和Ubuntu操作系统
效果图: 问题拾遗: 一.如何划分一个新硬盘空间? 参考链接:如何新建磁盘空间 效果图: 我划分了20G的内存空间给Ubuntu的硬盘空间.一般来说15G就够用了. 二.VMware上拷贝Ubuntu ...
- HDU 3046 Pleasant sheep and big wolf(最小割最大流+Dinic)
http://acm.hdu.edu.cn/showproblem.php?pid=3046 题意: 给出矩阵地图和羊和狼的位置,求至少需要建多少栅栏,使得狼不能到达羊. 思路:狼和羊不能到达,最小割 ...
- blast 数据库说明
Peptide Sequence Databases蛋白序列的数据库 nrAll non-redundant GenBank CDS translations + RefSeq Proteins + ...
- poj 1986 Distance Queries 带权lca 模版题
Distance Queries Description Farmer John's cows refused to run in his marathon since he chose a pa ...
- python 获取本地语言和编码的代码
#! /usr/bin/env python # encoding=utf8 import locale language, encoding = locale.getdefaultlocale() ...