ZOJ3705:Applications
Recently, the ACM/ICPC team of Marjar University decided to choose some new members from freshmen to take part in the ACM/ICPC competitions of the next season. As a traditional elite university in ACM/ICPC, there is no doubt that application forms will fill up the mailbox. To constitute some powerful teams, coaches of the ACM/ICPC team decided to use a system to score all applicants, the rules are described as below. Please note that the score of an applicant is measured by pts, which is short for "points".
1. Of course, the number of solved ACM/ICPC problems of a applicant is important. Proudly, Marjar University have a best online judge system called Marjar Online Judge System V2.0, and in short, MOJ. All solved problems in MOJ of a applicant will be scored under these rules:
- (1) The problems in a set, called MaoMao Selection, will be counted as 2.5 pts for a problem.
- (2) The problems from Old Surgeon Contest, will be counted as 1.5 pts for a problem.There is no problem in MaoMao Selection from Old Surgeon Contest.
- (3) Besides the problem from MaoMao Selection and Old Surgeon Contest, if the problem's id is a prime, then it will be counted as 1 pts.
- (4) If a solved problem doesn't meet above three condition, then it will be counted as 0.3 pts.
2. Competitions also show the strength of an applicant. Marjar University holds the ACM/ICPC competition of whole school once a year. To get some pts from the competition, an applicant should fulfill rules as below:
- The member of a team will be counted as 36 pts if the team won first prize in the competition.
- The member of a team will be counted as 27 pts if the team won second prize in the competition.
- The member of a team will be counted as 18 pts if the team won third prize in the competition.
- Otherwise, 0 pts will be counted.
3. We all know that some websites held problem solving contest regularly, such as JapanJam, ZacaiForces and so on. The registered member of JapanJam will have a rating after each contest held by it. Coaches thinks that the third highest rating in JapanJam of an applicant is good to show his/her ability, so the scoring formula is:
Pts = max(0, (r - 1200) / 100) * 1.5
Here r is the third highest rating in JapanJam of an applicant.
4. And most importantly - if the applicant is a girl, then the score will be added by 33 pts.
The system is so complicated that it becomes a huge problem for coaches when calculating the score of all applicants. Please help coaches to choose the best M applicants!
Input
There are multiple test cases.
The first line of input is an integer T (1 ≤ T ≤ 10), indicating the number of test cases.
For each test case, first line contains two integers N (1 ≤ N ≤ 500) - the number of applicants and M (1 ≤ M ≤ N) - the number of members coaches want to choose.
The following line contains an integer R followed by R (0 ≤ R ≤ 500) numbers, indicating the id of R problems in MaoMao Selection.
And then the following line contains an integer S (0 ≤ S ≤ 500) followed by S numbers, indicating the id of S problems from Old Surgeon Contest.
The following line contains an integer Q (0 ≤ Q ≤ 500) - There are Q teams took part in Marjar University's competition.
Following Q lines, each line contains a string - team name and one integer - prize the team get. More specifically, 1 means first prize, 2 means second prize, 3 means third prize, and 0 means no prize.
In the end of each test case, there are N parts. In each part, first line contains two strings - the applicant's name and his/her team name in Marjar University's competition, a char sex - M for male, F for female and two integers P (0 ≤ P ≤ 1000) - the number of problem the applicant solved, C (0 ≤ C ≤ 1000) - the number of competitions the applicant have taken part in JapanJam.
The following line contains P integers, indicating the id of the solved problems of this applicant.
And, the following line contains C integers, means the rating for C competitions the applicant have taken part in.
We promise:
- The problems' id in MaoMao Selection, Old Surgeon Contest and applicant's solving list are distinct, and all of them have 4 digits (such as 1010).
- All names don't contain spaces, and length of each name is less than 30.
- All ratings are non-negative integers and less than 3500.
Output
For each test case, output M lines, means that M applicants and their scores. Please output these informations by sorting scores in descending order. If two applicants have the same rating, then sort their names in alphabet order. The score should be rounded to 3 decimal points.
Sample Input
1
5 3
3 1001 1002 1003
4 1004 1005 1006 1007
3
MagicGirl!!! 3
Sister's_noise 2
NexusHD+NexusHD 1
Edward EKaDiYaKanWen M 5 3
1001 1003 1005 1007 1009
1800 1800 1800
FScarlet MagicGirl!!! F 3 5
1004 1005 1007
1300 1400 1500 1600 1700
A NexusHD+NexusHD M 0 0 B None F 0 0 IamMM Sister's_noise M 15 1
1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015
3000
Sample Output
FScarlet 60.000
IamMM 44.300
A 36.000
题意:这题题目很长,条件也非常多,导致我们比赛的时候少看了一个条件,一直纠结了很久
第一行给出一个数字,代表样例的个数
第二行给出两个数,代表人数和输出排名的前几个人
第三四行分别给出MaoMao Selection和Surgeon Contest的题目数量与题号
第五行给出拿到前三等奖的数目,接下来给出每个获奖的队伍和获得的排名
最后给出每个人的信息,包括人名,队名,性别,OJ里的做题数,参加比赛的数目
然后给出题号与比赛的得分
而每个人的得分计算是这样:
首先是做的题所得的分:1.在MaoMao Selection做的题得2.5分
2.在Surgeon Contest做的题得1.5分
3.如果不在这两个地方做的题并且题号为奇数,得1分
4.否则0.3分
如果所在的队伍得奖了:一等奖36分,尔等27,三等18
如果是女的:得到33分
如果参加过比赛,则取排第三的分数,计算公式Pts = max(0, (r - 1200) / 100) * 1.5为得分,如果小于3次比赛则不算
知道了题意之后,就是简单的模拟题了
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std; struct TEAM
{
char name[50];
int rank;
} team[505]; struct MAN
{
char name[30],team[30];
char sex[3];
double score;
int pro,rush;
int p[505],r[505];
} man[505]; int mao[505],sur[505],k_mao,k_sur; int prime(int x)
{
int i;
for(i = 2; i*i<=x; i++)
if(x%i==0)
return 1;
} double problem(int x)
{
int i;
for(i = 0; i<k_mao; i++)
{
if(x == mao[i])
return 2.5;
}
for(i = 0; i<k_sur; i++)
{
if(x == sur[i])
;
return 1.5;
}
if(prime(x))
return 1;
return 0.3;
} int cmp_rank(TEAM x,TEAM y)
{
return x.rank<y.rank;
} double big(double a,double b)
{
return a>b?a:b;
} int cmp_score(MAN x,MAN y)
{
return x.score>y.score;
} int cmp_r(double a,double b)
{
return a>b;
} int main()
{
int t,man_num,team_num,m,i,j,k,xx;
double ss,r[1005];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&man_num,&m);
scanf("%d",&k_mao);
for(i = 0; i<k_mao; i++)
scanf("%d",&mao[i]);
scanf("%d",&k_sur);
for(i = 0; i<k_sur; i++)
scanf("%d",&sur[i]);
scanf("%d",&team_num);
for(i = 0; i<team_num; i++)
scanf("%s%d",team[i].name,&team[i].rank);
for(i = 0; i<man_num; i++)
{
man[i].score = 0;
scanf("%s%s%s%d%d",man[i].name,man[i].team,man[i].sex,&man[i].pro,&man[i].rush); for(j = 0; j<man[i].pro; j++)
{
scanf("%d",&xx);
man[i].score+=problem(xx);
}
sort(team,team+team_num,cmp_rank);
for(j = 0; j<team_num; j++)
{
if(!strcmp(man[i].team,team[j].name))
{
if(team[j].rank==1)
man[i].score+=36;
else if(team[j].rank==2)
man[i].score+=27;
else if(team[j].rank==3)
man[i].score+=18;
}
}
memset(r,0,sizeof(r));
for(j = 0; j<man[i].rush; j++)
{
scanf("%lf",&r[j]);
}
sort(r,r+man[i].rush,cmp_r);
if(man[i].rush>=3)
man[i].score+=big(0,((r[2]-1200.0)/100)*1.5);
if(!strcmp(man[i].sex,"F"))
man[i].score+=33;
}
sort(man,man+man_num,cmp_score);
for(i = 0; i<m; i++)
{
printf("%s %.3lf\n",man[i].name,man[i].score);
}
}
return 0;
}
ZOJ3705:Applications的更多相关文章
- Authorization in Cloud Applications using AD Groups
If you're a developer of a SaaS application that allows business users to create and share content – ...
- DAC Usage3:Monitor Data-tier Applications
If you deploy a DAC to a managed instance of the Database Engine, information about the deployed DAC ...
- Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications 云设计模式:云应用的规范架构指导
1.Cache-aside Pattern 缓存模式 Load data on demand into a cache from a data store. This pattern can impr ...
- Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibr
网上找了一大堆,没有解决的办法 ,主要是iOS10的适配问题,info.plist里没有加对. 访问相册,我只加了 <!-- 相册 --> <key>NSPhotoLibrar ...
- Identify Memory Leaks in Visual CPP Applications —— VLD内存泄漏检测工具
原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于 ...
- CLR via C# 3rd - 02 - Building, Packaging, Deploying, and Administering Applications and Types
1. C# Compiler - CSC.exe csc.exe /out:Program.exe /t:exe /r:MSCorLib.dll Program.cs ...
- [转]Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications
This article is from blog of Amazon CTO Werner Vogels. -------------------- Today is a very exciting ...
- 我看见的第一个XCODE编译错误 - Command /applications.../clang failed with exit code 1
开始用XCODE学习Apple相关开发的东东,写些demo熟悉Object C,一直还没看见什么问题,昨晚在家把一些demo上传到代码服务器,今天在另外一台机器上下载下来编译,出现了问题: Preco ...
- Kernel Functions for Machine Learning Applications
In recent years, Kernel methods have received major attention, particularly due to the increased pop ...
随机推荐
- OD 实验(十六) - 从对话框入手对程序的逆向
对话框: 对话框从类型上分为两类:modal 对话框和 modeless 对话框,就是模态对话框和非模态对话框,也有叫成模式和非模式 模态对话框不允许用户在不同窗口间进行切换,非模态对话框允许用户在不 ...
- python与冒泡排序
上一篇文章,介绍了一个非常快的排序算法--桶排序,但是它的缺点就是太耗资源了,这次要实现的算法就不用太耗资源了,它就是冒泡排序. 问题提出: 将以下数据升序排列:9, 2, 8, 6, 4 冒泡排序原 ...
- Spring Data MongoDB 三:基本文档查询(Query、BasicQuery
一.简介 spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate对MongoDB的CRUD的操作,上一篇我 ...
- 读《分布式一致性原理》JAVA客户端API操作
创建会话 客户端可以通过创建一个Zookeeper实例来连接服务器.4种构造方法如下 ZooKeeper(connectString, sessionTimeout, watcher): ZooKee ...
- pipenv 简要指南
pipenv 简要指南 pipenv是requests作者的一个项目, 整合了virtualenv, pip, pipfile, 用于更方便地为项目建立虚拟环境并管理虚拟环境中的第三方模块. 安装 直 ...
- django -- url 的 命名空间
命名空间 a. project.urls.py 1 2 3 4 5 6 from django.conf.urls import url,include urlpatterns = [ u ...
- 在EXCEL中使用SQL语句查询
SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...
- 谈谈跨平台的app开发 坚定的选择了flutter
目前市场上,(市场也许用的不对),比较常见的技术有xamrin.RN.Flutter,确切的说flutter是后起之秀,笔者也是最近才开始学习,xamrin是微软系的技术,笔者也很早就开始学习了,RN ...
- C++STL:流迭代器
流迭代器是一种迭代器适配器.istream_iterator用于读取输入流,ostream_iterator用于写输出流.这些迭代器将它们所对应的流视为特定类型的元素序列.使用流迭代器时,可以用泛型算 ...
- Python解释器种类以及特点 (经典概括, 便于理解和记忆)
CPython c语言开发的 使用最广的解释器 IPython 基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样 PyPy 目标是执行效率 采用JIT技术 对pytho ...