点我看题目

题意 : 真是一道又臭又长的模拟题啊,不过比赛的时候没看,赛完了补的。

给你N个候选人,让你从中选M个候选人,根据四个大规则来确定每个人的分数,然后选分数前M个人的输出。

1、在MOJ上做过题的根据以下规则来计算加分:

  • 如果题目是MAOMAO中的,做对一道加2.5分
  • 如果题目是Old Surgeon Contest中的做对一个加1.5分,当然在MAOMAO中没有与Old Surgeon Contest中相同的题
  • 如果不是两个中的题,但是题号是素数的做对一道加1分
  • 如果不是上边三种情况中的任何一种,做对一道加0.3分。

2、 Marjar学校每年都会举办比赛,如果申请人中有得了奖的,一等奖加36分,二等奖加27分,三等奖加18分,否则加0分。

3、还有在别的OJ上做比赛的,会根据他们做的情况进行加分,如果在那些OJ上做的比赛超过三场的,取第三高的分数进行运算,pts =  max(0, (r - 1200) / 100) * 1.5,r 即第三高的分数,然后将pts加入到最后的得分中。

4、如果申请人是女生再多加上33分。

思路 :题意已经说的差不多了,接下来就可以模拟了。注意好细节就可以了。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <string>
#include <map> using namespace std ; struct node
{
string name ;
double score ;
bool operator<(node a)const{
if(score == a.score)
return name < a.name ;
return score > a.score ;
}
}pt[] ; map<string,int>mapp ;
int Mao[] , OSC[] ,ss[]; int isprime(int n)
{
for(int i = ; i*i <= n ; i++)
if(n%i == )
return ;
return ;
}
int main()
{
int T,N,M,R,S,m,Q,n ;
scanf("%d",&T) ;
char nam[] ;
while(T--)
{
memset(Mao,,sizeof(Mao)) ;
memset(OSC,,sizeof(OSC)) ;
memset(ss,,sizeof(ss)) ;
mapp.clear() ;
scanf("%d %d",&N,&M) ;
scanf("%d",&R) ;
for(int i = ; i < R ; i++){scanf("%d",&m) ;Mao[m] = ;}
scanf("%d",&S) ;
for(int i = ; i < S ; i++){scanf("%d",&m) ; OSC[m] = ;}
scanf("%d",&Q) ;
for(int i = ; i < Q ; i++)
{
scanf("%s %d",nam,&m) ;
if(m == ) mapp[nam] += ;
else if(m == ) mapp[nam] += ;
else if(m == ) mapp[nam] += ;
else mapp[nam] += ;
}
char sex ;
for(int i = ; i < N ; i++)
{
cin >> pt[i].name>>nam>>sex>>m>>n ;
if(sex == 'M')
pt[i].score = ;
else pt[i].score = ;
pt[i].score += mapp[nam] ;
int id ;
for(int j = ; j < m ; j++)
{
scanf("%d",&id) ;
if(Mao[id]) pt[i].score += 2.5 ;
else if(OSC[id]) pt[i].score += 1.5 ;
else if(isprime(id)) pt[i].score += ;
else pt[i].score += 0.3 ;
}
for(int j = ; j < n ; j++) scanf("%d",&ss[j]) ;
if(n >= )
{
sort(ss,ss+n) ;
pt[i].score += max(0.0, (ss[n-] - ) / 100.0) * 1.5 ;
}
}
sort(pt,pt+N) ;
for(int i = ; i < M ; i++)
{
cout<<pt[i].name ;
printf(" %.3f\n",pt[i].score) ;
}
}
return ;
}

ZOJ 3705 Applications的更多相关文章

  1. ZOJ - 3705 Applications 【模拟】

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

  2. ZOJ 3705 Applications 模拟

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

  3. Applications (ZOJ 3705)

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

  4. POJ 2418 ,ZOJ 1899 Hardwood Species - from lanshui_Yang

    Description Hardwoods are the botanical group of trees that have broad leaves, produce a fruit or nu ...

  5. Detect the Virus ZOJ - 3430 AC自动机

    One day, Nobita found that his computer is extremely slow. After several hours' work, he finally fou ...

  6. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  7. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  8. 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 – ...

  9. DAC Usage3:Monitor Data-tier Applications

    If you deploy a DAC to a managed instance of the Database Engine, information about the deployed DAC ...

随机推荐

  1. Java基础环境搭建

  2. 【JavaScript DOM编程艺术(第二版)】笔记

    第1章 javascript简史 1.什么是DOM? 简单的说,DOM是一套对文档的内容进行抽象和概念化的方法.\         第2章 javascript语法 1.内建对象: 内建在javasc ...

  3. SQL Server 可疑的解决办法

    SQL SERVER 数据库状态为“可疑”的解决方法 --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE RECONFIGURE WITH OVERRIDE GO ALT ...

  4. 自定义popupmenu菜单背景色

    procedure TForm1.N11DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); be ...

  5. 页面加载后的input change事件 1或2个框 ajax

    数据层没有,js和bll直接链接,数据层用的hqew. js: window.onload = function () { //型号input 改变 事件 $("#typeofproduct ...

  6. 2.1 JavaScript应用开发实践指南

    创建交互层 循环 示例代码如下: var people = family, peopleCount = items.length, i; if(peopleCount>0){ for(i=0; ...

  7. C++中使用多线程

    使用的函数是CreateThread和CloseHandle相互配合. 举个简单的例子: 申明类变量 HANDLE hThread; DWORD ThreadID; 在需要创建线程的地方使用: hTh ...

  8. Linux用户级线程和内核级线程区别

    1.内核级线程: (1)线程的创建.撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程.(2)这些线程可以在全系统内进行资源的竞争.(3)内核空间内为每一个内核支持线程设置了一个线 ...

  9. ubuntu12.10设置禁止锁屏和屏幕常亮

    1.System Settings -> Brightness and Lock -> Turn off screen... set to "Never" 进入ubun ...

  10. centos svn安装

    http://fengjunoo.iteye.com/blog/1759265(参考) 以前在ubuntu上安装过一次svn,那次弄得有些麻烦. 这次记录下centos环境下安装svn的步骤 其实简单 ...