题目链接

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);
}
}
}

ZOJ - 3705 Applications 【模拟】的更多相关文章

  1. ZOJ 3705 Applications 模拟

    #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include< ...

  2. ZOJ 3705 Applications

    点我看题目 题意 : 真是一道又臭又长的模拟题啊,不过比赛的时候没看,赛完了补的. 给你N个候选人,让你从中选M个候选人,根据四个大规则来确定每个人的分数,然后选分数前M个人的输出. 1.在MOJ上做 ...

  3. Applications (ZOJ 3705)

    题解:就是题目有点小长而已,可能会不想读题,但是题意蛮好理解的,就是根据条件模拟,计算pts.(送给队友zm. qsh,你们不适合训练了.) #include <iostream> #in ...

  4. A - Jugs ZOJ - 1005 (模拟)

    题目链接:https://cn.vjudge.net/contest/281037#problem/A 题目大意:给你a,b,n.a代表第一个杯子的容量,b代表第二个杯子的容量,然后一共有6种操作.让 ...

  5. ZOJ 2610 Puzzle 模拟

    大模拟:枚举6个方向.检查每一个0是否能移动 Puzzle Time Limit: 2 Seconds      Memory Limit: 65536 KB Little Georgie likes ...

  6. Applications(模拟)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3705 题意:主要是分值计算要注意以下几点: (1) 在MOJ上解出的题,如 ...

  7. Capture the Flag ZOJ - 3879(模拟题)

    In computer security, Capture the Flag (CTF) is a computer security competition. CTF contests are us ...

  8. ZOJ 3652 Maze 模拟,bfs,读题 难度:2

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4842 要注意题目中两点: 1.在踏入妖怪控制的区域那一刹那,先减行动力,然后才 ...

  9. [ZOJ 1009] Enigma (模拟)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1009 题目大意:给你三个转换轮,只有当第一个转换轮转动一圈后第二 ...

随机推荐

  1. STL学习笔记(第四章 通用工具)

    本章讲解C++标准程序库中的通用工具.它们是由短小精干的类和函数构成. Pairs(对组) class pair可以将两个值视为一个单元.STL内多处使用了pair.尤其容器map和multimap, ...

  2. 【BIEE】[nQSError: 35008]尝试从服务器检出对象时出错。请验证服务器设置。

    今天在使用PRD时,我先导入表A,然后觉得表A的名字不好,就把导入的表A重命名为表A_TMP,接着保存资料库就卡住了"未响应"(一般不会出现这种问题) 接着我直接使用任务管理器强制 ...

  3. jQuery.delegate() 函数详解

    delegate()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 即使是执行delegate()函数之后新添加的元素,只要它符合条件,绑定 ...

  4. ListView知识点汇总(9.2)

    1 最为基础的listview: http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html http://blog.csdn.net/h ...

  5. MySQL:习题(单表多条件查询二)

    Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性 ...

  6. oracle分区表和分区索引概述

    ㈠ 分区表技术概述            ⑴ Range 分区            ① 例子                  create table t         (...列定义...)  ...

  7. Hadoop2.6.0版本MapReudce示例之WordCount(一)

    一.准备测试数据 1.在本地Linux系统/var/lib/Hadoop-hdfs/file/路径下准备两个文件file1.txt和file2.txt,文件列表及各自内容如下图所示: 2.在hdfs中 ...

  8. ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs

    ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs 第一部分:使用ssh key 实现服务器间的免密码交互登陆 步骤1: 安装openssh-clients [root@001 ...

  9. Live555 中的客户端openRTSP 保存H264文件

    http://amitapba.blog.163.com/blog/static/20361020720140189239762/ http://amitapba.blog.163.com/blog/ ...

  10. &lt;C#入门经典&gt;学习笔记1之初识C#

    序言 选择< C#入门经典第五版>作为自学书籍,以此记录学习过程中的笔记与心得. C#简单介绍 1. C#是一种块结构的语言 2. C#区分大写和小写 C#变量 C#的变量定义与C语言相似 ...