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. 用TWaver加载大型游戏场景一例

    游戏中经常会出现一些大型的户外场景,例如一个小镇.一座古城等.通常这种场景中包含了较多的建筑.道路.桥梁等等元素,其3D模型比较大且复杂.在使用TWaver加载时,可使用一些技巧,让加载速度更快.显示 ...

  2. 腾讯云,体验域名注册解析与SSL证书

    体验域名注册解析与SSL证书 购买域名 任务时间:30min ~ 60min 在腾讯云上购买域名 首先需要在腾讯云上购买域名, 点击以下链接可以观看购买操作的指引 如何在腾讯云上购买域名 域名解析 域 ...

  3. QQ帐户的申请与登陆

    QQ帐户的申请与登陆 实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式: 输入首先给出一个正整数N(≤10^5,随后给出N行指令.每行指令的格式为 ...

  4. 2.5.5.2 特殊文件:/dev/null 与 /dev/tty

        UNIX 系统提供了两个对Shell编程特别有用的特殊文件.       第一个文件 /dev/null ,就是大家所熟知的位桶(bit bucket).传送到此文件的数据都会被丢掉.换句话说 ...

  5. noip模拟赛 寻宝之后

    题目背景 还记得NOIP2011的寻宝吗?6年之后,小明带着他的妹子小芳,再次走上了寻宝的道路. 然而这次他们寻宝回来之后,小明被困在了一个迷宫中. 题目描述 迷宫是一个n*m的字符矩阵. 小明在这个 ...

  6. 【tomcat】如何修改tomcat的默认项目

    我们知道,在Tomcat安装.配置.启动成功后在浏览器地址栏输入http://localhost:8080会访问到Tomcat的默认主页. 然后我们打开Tomcat的webapps目录时,会发现里面有 ...

  7. Ubuntu 16.04安装设备管理器Hardinfo和lshw设备信息命令

    安装: sudo apt-get install hardinfo 启动: 实际上这些信息都可以通过lshw进行查看,参考:https://linux.die.net/man/1/lshw

  8. Java中DAO/DTO/PO/VO/BO/QO/POJO

    ORM:是Object Relational Mapping(对象关系映射)的缩写. 通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在O/R/M的世界里,有两个基本的也是重要的东东需要了 ...

  9. Swift: 转换NSString to String

    如下代码获取一个String?的结果 let s = NSString(data: data, encoding: encoding) return s as? String

  10. UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效

    #import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableVi ...