题目链接

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3705

题意

给出N个队员 然后一个教练要从中选择 M名队员 要选最优的M名

然后根据这么来判断

IF做过的题目是属于 MaoMao Selection 那么 pts + 2.5

else IF属于 Old Surgeon Contest pts + 1.5

else IF 题目序号是素数 pts + 1

else pts + 0.3

IF 参赛的队伍获得一等奖 pts + 36

else IF 获得二等奖 pts + 27

else IF 获得三等奖 pts + 18

else pts + 0

参加 JapanJam 类的比赛 (计算rating)

用第三高的 rating 作为 r

Pts = max(0, (r - 1200) / 100) * 1.5

计算这个式子 算得 要加的 pts

最后 如果这名队员是女生 pts + 33

输入:

先输入T 表示 T组数据

输入 N M 表示 N名队员 选 M个

输入 R 再有R个题目 序号 表示 这R个题目是 MaoMao Selection

输入 S 再有S个题目序号 表示 这 S个题目是 Old Surgeon Contest

输入 Q

接下来 Q 行

每行三个参数 string int

分别代表 队伍名称 获得的奖项序号

接下来 N 行

参数 string string char int int

表示 队员名称 所属的队伍名称 性别 所做的题目数量 和 参加的 japan 比赛次数

然后会列出 题目序号 以及 每次参加 japan 所获得的 rating

思路

大概 题意讲清,,就能 A了吧

对了 如果 rating 个数 不足三个 那么 pts + 0

AC代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<map>
#include<set>
#include<string>
#include<list>
#include<stack>
#include <queue> #define CLR(a, b) memset(a, (b), sizeof(a)) using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
const int INF = 0x3f3f3f3f;
const int maxn = 1e2 + 5;
const int MOD = 1e9; bool isprime(int x)
{
int m = sqrt(x) + 1;
for (int i = 2; i <= m; i++)
if (x % i == 0)
return false;
return true;
}
struct node
{
string name;
double score;
}; bool comp(int x, int y)
{
return x > y;
} bool cmp(node x, node y)
{
if (x.name == y.name)
return x.name < y.name;
return x.score > y.score;
} int main()
{
int t;
cin >> t;
while (t--)
{
map <int, int> mao, old;
int n, m;
scanf("%d%d", &n, &m);
int k;
scanf("%d", &k);
int num;
for (int i = 0; i < k; i++)
{
scanf("%d", &num);
mao[num] = 1;
}
scanf("%d", &k);
for (int i = 0; i < k; i++)
{
scanf("%d", &num);
old[num] = 1;
}
map <string, int> prize;
scanf("%d", &k);
string s;
for (int i = 0; i < k; i++)
{
cin >> s;
scanf("%d", &num);
if (num == 1)
prize[s] = 36;
else if (num == 2)
prize[s] = 27;
else if (num == 3)
prize[s] = 18;
else if (num == 0)
prize[s] = 0;
}
vector <node> ans;
char c;
for (int i = 0; i < n; i++)
{
node u;
u.score = 0.0;
cin >> u.name;
cin >> s;
u.score += prize[s];
scanf(" %c", &c);
if (c == 'F')
u.score += 33;
int v, w;
scanf("%d%d", &v, &w);
for (int i = 0; i < v; i++)
{
scanf("%d", &num);
if (mao[num])
u.score += 2.5;
else if (old[num])
u.score += 1.5;
else if (isprime(num))
u.score += 1;
else
u.score += 0.3;
}
vector <int> rat;
for (int i = 0; i < w; i++)
{
scanf("%d", &num);
rat.push_back(num);
}
if (rat.size() >= 3 )
{
sort(rat.begin(), rat.end(), comp);
u.score += (0, (rat[2] - 1200) * 1.0 / 100) * 1.5;
}
ans.push_back(u);
}
sort(ans.begin(), ans.end(), cmp);
for (int i = 0; i < m; i++)
{
cout << ans[i].name;
printf(" %.3lf\n", ans[i].score);
}
}
}

最新文章

  1. Mono的简单例子
  2. php短路与 短路或
  3. Gridview布局界面练习Simple Adapter
  4. 持续集成(二)环境搭建篇—内网邮件server搭建
  5. absolute绝对定位可以实现相对定位
  6. 关于Tomcat启动时报The APR based Apache Tomcat Native library which allows optimal performanc e in production environments was not found on the java.library.path
  7. 解决vs2015使用fopen、fprintf等函数报错的问题
  8. WCF发布后远程访问的域名解析问题
  9. (转)iOS学习之 plist文件的读写
  10. 四、Mp3文件类型及其判断
  11. dpkg, APT, aptitude常用命令
  12. SurfaceView的一个小应用:开发示波器
  13. Unity--关于优化方面的那些事儿(一)
  14. OracleServiceORCL服务不见了怎么办
  15. 通过业务系统的重构实践DDD
  16. Django之--网页展示Hello World!
  17. .NET CORE控制器里的方法取传参的坑
  18. js cookies
  19. 存储器结构、cache、DMA架构分析--【原创】
  20. No setter found for property &#39;cronExpression&#39; in class &#39;org.springframework.scheduling.quartz.CronTriggerBean&#39;

热门文章

  1. 效果超赞的基于js的chat组件和图形动画组件
  2. 谈谈PHP网站的防SQL注入
  3. statusbar的颜色设置
  4. 介绍C#结构体与类区别
  5. HDU 4738 Caocao&amp;#39;s Bridges(找割边)
  6. hdu Portal(离线,并查集)
  7. 从Java视角理解CPU缓存和伪共享
  8. [译]GLUT教程 - 子菜单
  9. Weka学习之认识weka(一)
  10. 《TomCat与Java Web开发技术详解》(第二版) 第八章节的学习总结 -- 访问mysql