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

题意:主要是分值计算要注意以下几点:

(1) 在MOJ上解出的题,如果是 MaoMao Selection  则加2.5分,如果是来自 Old Surgeon Contest则加1.5分,除了这两种情况外,如果解出的题号是素数,加1分,如果都不符合上述情况则加0.3分。

(2)参加 ACM/ICPC 的队伍,一等奖加36分,二等奖加27,三等奖加18分,其余不加分。(ps:一个队伍可能参加多次比赛)。

(3)有rating值的按照得分公式:Pts = max(0, (r - 1200) / 100) * 1.5,(注意公式中的类型要转换成double),其中r代表第三高的rating值。

(4)如果是女生的话加33分。

最后的输出要求按分值高低输出前M个人的名字和分值,如果分值相同则按名字的字典序输出。

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
#include <map>
#include <algorithm>
using namespace std;
const int N=;
int f[N],vR[N],vS[N],p[N];
void is_prime( )
{
f[] = ;
f[] = ;
for (int i = ; i < N; i ++)
{
f[i] = i%;
}
for (int i = ; i <= ; i ++)
{
if (f[i])
{
for (int j = *i; j < N; j += i)
f[j] = ;
}
}
}
struct node
{
string name;
double score;
friend bool operator < (const node a,const node b)
{
if (a.score == b.score)//分值相同时按名字排序
{
return a.name < b.name;
}
return a.score > b.score;//分值不同时从高到低排序 }
} a[];
int main()
{
int t;
scanf("%d",&t);
is_prime();//素数打表
while(t--)
{
for (int i = ; i < ; i++)
a[i].score = ;
map<string,double>Map;
memset(vR,,sizeof(vR));
memset(vS,,sizeof(vS));
int n,m,x;
int R,S;
scanf("%d%d",&n,&m);
scanf("%d",&R);
for (int i = ; i < R; i++)
{
scanf("%d",&x);
vR[x] = ;//标记第一种题
}
scanf("%d",&S);
for (int j = ; j < S; j++)
{
scanf("%d",&x);
vS[x] = ;//标记第二种题
}
int Q;
scanf("%d",&Q);
while(Q--)
{
int rank1;
string name;
cin>>name>>rank1;
if (rank1==)//根据队伍的名次加分
Map[name] += ;
else if (rank1==)
Map[name] += ;
else if (rank1==)
Map[name] += ;
else
Map[name] += ;
}
for (int i = ; i < n; i++)
{
int num1,num2;
string pname,tname,sex;
cin>>pname>>tname>>sex>>num1>>num2;
a[i].name = pname;
a[i].score+=Map[tname];
if (sex=="F")//女生加分
a[i].score+=;
for (int j = ; j < num1; j++)
{
scanf("%d",&x);
if(vR[x])//做的第一种题
a[i].score+=2.5;
else if (vS[x])//做的第二种题
a[i].score+=1.5;
else
{
if(f[x])//题号为素数
a[i].score+=1.0;
else
a[i].score+=0.3;
}
}
memset(p,,sizeof(p));
for (int j = ; j < num2; j++)
scanf("%d",&p[j]);//rating值
if (num2 >= )
{
sort(p,p+num2);//rating排序,由第三高的rating值带人公式计算分值
double temp = max(0.0,(1.0*p[num2-]-1200.0)/100.0)*1.5;
a[i].score+=temp;
}
}
sort(a,a+n);//按输出要求排序
for (int i = ; i < m; i++)
{
cout<<a[i].name;
printf(" %.3f\n",a[i].score);
}
}
return ;
}

Applications(模拟)的更多相关文章

  1. ZOJ 3705 Applications 模拟

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

  2. ZOJ - 3705 Applications 【模拟】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3705 题意 给出N个队员 然后一个教练要从中选择 M名队员 要选 ...

  3. 在PC上测试移动端网站和模拟手机浏览器的5大方

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  4. 整理分享C#通过user32.dll模拟物理按键操作的代码

    对系统模拟按键方面的知识和按键映射代码做了一下梳理,在这里分享出来,适用于开发自动操作工具和游戏外挂. 主代码: public const int KEYEVENTF_EXTENDEDKEY = 0x ...

  5. POJ 1016 模拟字符串

    Numbers That Count Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20396   Accepted: 68 ...

  6. ns3模拟无线Ad hoc 网络通信

    Ad hoc网络 Ad hoc网是一种多跳的.无中心的.自组织无线网络,又称为多跳网(Multi-hop Network).无基础设施网(Infrastructureless Network)或自组织 ...

  7. Codeforces Round #366 (Div. 2) C 模拟queue

    C. Thor time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  8. splinter python浏览器自动化操作,模拟浏览器的行为

    Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...

  9. java模拟浏览器包selenium整合了htmlunit,火狐浏览器,IE浏览器,opare浏览器驱

    //如果网页源码中有些内容是js渲染过来的,那你通过HttpClient直接取肯定取不到,但是这些数据一般都是通过异步请求传过来的(一般都是通过ajax的get或者post方式).那么你可以通过火狐浏 ...

随机推荐

  1. 模拟--P1427 小鱼的数字游戏

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  2. 来说一说chrome扩展和chrome插件到底有什么区别?

    想讨论chrome扩展和chrome插件区别这个话题很久了!但是迟迟没有写.因为我自己也没有搞清楚这两者之间的区别!回想当初是因为需要寻找番羽墙插件才想到去搜索到chrome插件. 想讨论chrome ...

  3. 百练4152:最佳加法表达式(dp+高精度)

    描述 给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值.例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36 输入有不超 ...

  4. [bzoj1070][SCOI2007]修车[ 网络流]

    把每个工人拆成N个点.记为A[i,j]表示第i个工人修倒数第j辆车.每个车跟所有N*M个工人拆出的点连边.流量为1,费用为$time[i,j]*k$.源和每辆车连边,N*M个点和汇连边,流量都为1,费 ...

  5. 超级钢琴(codevs 2934)

    题目描述 Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音 ...

  6. linux命令与技巧

    1.模糊查询:find / -name '*Eclipse*'2.获得管理员权限:sudo -i

  7. codevs2486 太鼓达人

    题目描述 Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_s ...

  8. [bzoj1572][Usaco2009 Open]工作安排Job_贪心_堆

    工作安排 Job bzoj-1572 Usaco-2009 Open 题目大意:题目链接. 注释:略. 想法: 我们将任务按照截止时间排序,枚举任务的同时顺便记录出已经做了多少任务(当前时间). 对于 ...

  9. Java的动态代理(DynamicProxy)

    代理的概述 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式UML图 ...

  10. 墨卡托坐标与LBS应用

    今天了解到这边的LBS应用,一般用的是墨卡托坐标. 也就是商品库的商品入库的时候,会根据输入,使用百度地图提供的一个API,来转换成一个墨卡托坐标. 然后用户流量过来的时候,会带来历史坐标,和当前坐标 ...