Worried School

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 112    Accepted Submission(s): 34

Problem Description
You may already know that how the World Finals slots are distributed in EC sub-region. But you still need to keep reading the problem in case some rules are different.
There are totally G slots for EC sub-region. X slots will be distributed among five China regional sites and Y slots will be distributed to the EC-Final. Of course X and Y are non-negative integers and X + Y = G.
Here is how the X slots be distributed:

      1. Slots are assigned to the Asia Regional sites from the first place, the second place, · · · , last place.
2. For schools having the same place across the sites, the slots will be given in the order of the number of “effective
teams” in the sites.
3. No school could be assigned a slot 2 times, which means the schools will be skipped if they already got a slot.

After X slots are distributed, the EC-Final ranklist from highest rank will be assigned Y slots for those schools that haven’t got a slot yet.
Now here comes a sad story, as X and Y are not announced until the end of the last regional contest of that year, even later!!!
Teachers from a school are worried about the whether they can advance to WF whatever the X and Y is. Let’s help them find out the results before the announcement of X and Y .

 
Input
The first line of the input gives the number of test cases, T. T test cases follow.
Each test case starts with a line consisting of 1 integer and 1 string, G representing the sum of X and Y and S representing the name of the worried school.
Next 5 lines each consists of 20 string representing the names of top 20 schools in each site. The sites are given in the order of the number of “effective teams” which means the first site has the largest number of “effective teams” and the last site has the
smallest numebr of “effective teams”.
The last line consists of 20 strings representing the names of top 20 schools in EC-Final site. No school can appear more than once in each ranklist
 
Output
For each test case, output one line containing “Case #x: y”, where x is the test case number (starting from 1) and y is “ADVANCED!” if every non-negative value X, Y will advance the school. Otherwise, output the smallest value of Y that makes the school sad.
∙ 1
≤ T ≤ 200.
∙ School
names only consist of upper case characters ‘A’ - ‘Z’ and the length is at most 5.
∙ 1
≤ G ≤ 20.
 
Sample Input
1
10 IJU
UIV GEV LJTV UKV QLV TZTV AKOV TKUV
GAV DVIL TDBV ILVTU AKV VTUD IJU IEV
HVDBT YKUV ATUV TDOV
TKUV UIV GEV AKV AKOV GAV DOV TZTV
AVDD IEV LJTV CVQU HVDBT AKVU XIV TDVU
OVEU OVBB KMV OFV
QLV OCV TDVU COV EMVU TEV XIV
VFTUD OVBB OFV DVHC ISCTU VTUD OVEU DTV
HEVU TEOV TDV TDBV CKVU
CVBB IJU QLV LDDLQ TZTV GEV GAV KMV
OFV AVGF TXVTU VFTUD IEV OVEU OKV DVIL
TEV XIV TDVU TKUV
UIV DVIL VFTUD GEV ATUV AKV TZTV QLV
TIV OVEU TKUV UKV IEV OKV CVQU COV
OFOV CVBB TDVU IOV
UIV TKUV CVBB AKV TZTV VFTUD UKV GEV
QLV OVEU OVQU AKOV TDBV ATUV LDDLQ AKVU
GAV SVD TDVU UPOHK
 
Sample Output
Case #1: 4

Hint

For the first test case, the optimal solution is X = 6 and Y = 4, at this time the advanced schools were [UIV, TKUV, QLV, CVBB, GEV, OCV, AKV, TZTV, VFTUD, UKV].

 

题目是难读懂了点,但是本身并不是很难做,可以说直接进行模拟就行了。

说一下题目大意吧:

现在WF分配总共g个名额分为两块(x+y=g):
首先,分配x个名额给五个中国区域站。
这五个中国区域站每个站都有20个学校,输入时这20个学校已经按照分数从大到小排好序。
分配这x个名额的顺序:
一号区域站第一名 -> 二号区域站第一名 -> 三号区域站第一名 -> 四号区域站第一名 -> 五号区域站第一名 -> 一号区域站第二名 -> 二号区域站第二名 -> …………
但是如果有重复就跳过这个学校,因为一个学校最多只能占一个名额。
然后,分配完x个名额后,剩下的y个名额分配给EC-Final中的20个学校,这20个学校输入时也按排名从高到低的顺序,这20个学校去除已经获得名额的学校后的第一名到第y名获得这y个名额。

输入:
每个test的第一行是总名额数g和要查询是否能进WF的那个学校——worried school;
接下来的1到5行分别是一到五号区域站的20个学校。
在接下来的一行是EC-Final的20个学校。

现在,我们要帮worried school看看它能不能进WF,如果对于任意的(x,y)都能使得worried school进WF,就输出“ADVANCED!”。
而如果对于一些(x,y)能使得worried school进WF,另一些(x,y)不能,就输出最小的y,这个时候(x,y)恰好使得worried school不能进WF。

 #include<cstdio>
#include<cmath>
#include<set>
#include<iostream>
using namespace std;
int g;
string site[][],EC_site[],worried_school;
int main()
{
int t;
scanf("%d",&t);
for(int kase=;kase<=t;kase++)
{
cin>>g>>worried_school;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++) cin>>site[i][j];
}
for(int j=;j<=;j++) cin>>EC_site[j]; int i,j,x,y=-;
set<string> adv_school;
for(int x=;x<=g;x++)
{
adv_school.clear();
bool can_adv_in_x=,can_adv_in_y=;
if(x>)//给5个site分配名额
{
for(int r=;r<=;r++)
{
i=r%; if(i==) i+=;
j=(int)ceil(r/5.0);
if(site[i][j]==worried_school) can_adv_in_x=;//目标学校可以进WF
adv_school.insert(site[i][j]);
if(adv_school.size()>=x) break;
}
}
if(g-x>)//给EC-Final分配名额
{
for(int j=;j<=;j++)
{
if(EC_site[j]==worried_school) can_adv_in_y=;
adv_school.insert(EC_site[j]);
if(adv_school.size()>=g) break;
}
}
if(!can_adv_in_x && !can_adv_in_y) y=g-x;
}
printf("Case #%d: ",kase);
if(y==-) printf("ADVANCED!\n");
else printf("%d\n",y);
}
}

HDU 6008 - Worried School的更多相关文章

  1. 【HDU 6008】Worried School(模拟)

    Problem Description You may already know that how the World Finals slots are distributed in EC sub-r ...

  2. CCPC 2016-2017, Finals

    A. HDU 5999 The Third Cup is Free 简单模拟. B. HDU 6000 Wash n 件衣服, m 个洗衣机,k 个烘干机.每个洗衣机和烘干机需要不同的时间.问 n 件 ...

  3. HDU 1160 DP最长子序列

    G - FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  4. HDU 1160 FatMouse's Speed(要记录路径的二维LIS)

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)

    Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  6. 怒刷DP之 HDU 1160

    FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  7. HDU 1160 FatMouse's Speed (DP)

    FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  8. HDU 5542 - The Battle of Chibi - [离散化+树状数组优化DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5542 Problem DescriptionCao Cao made up a big army an ...

  9. FatMouse's Speed (hdu 1160)

          #include <iostream> #include <cstdio> #include <cstring> #include <algori ...

随机推荐

  1. Window系统、主函数和窗体函数这三者之间的关系

    理解Window系统.主窗体.窗体函数这三者之间的关系,对于编写Windows程序十分重要. 主函数和窗体函数都是由Windows系统来调用的函数.仅仅只是主函数是程序启动之后.系统首先调用的函数: ...

  2. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

  3. PHP 源码加密模块 php-beast

    PHP Beast是一个源码加密模块,使用这个模块可以把PHP源码加密并在此模块下运行. 为什么要用PHP-Beast? 有时候我们的代码会放到代理商上, 所以很有可能代码被盗取, 或者我们写了一个商 ...

  4. Git Step by Step – (3) Git对象模型

    前面一篇文章介绍了本地仓库的一系列操作,下面我们将进一步了解Git的工作原理,介绍Git对象模型. 刚开始使用Git的时候,对Git对象模型.工作原理并不理解,但是经过一段时间的使用.熟悉之后,然后再 ...

  5. OSG3.4编译FFMPEG插件

    0.加入你要读a.mp4,那个正确的写法是osg::Image* image = osgDB::readImageFile("a.mp4.ffmpeg"); 1.在github上下 ...

  6. error:please select android sdk

    发现问题所在就是 在model iml文件中: 把<orderEntry type="inheritedJdk" /> 改成 <orderEntry type=& ...

  7. Studio更新

    其实最主要的是下面三个步骤: 1.更新As工程为3.0 2.必须升级gradle到4.0以上 3.buildToolsVersion升级到26.0.0 4.在gradle.properties中配置版 ...

  8. Python时间戳与时间字符串互相转换实例代码

    #设a为字符串import timea = "2011-09-28 10:00:00" #中间过程,一般都需要将字符串转化为时间数组time.strptime(a,'%Y-%m-% ...

  9. linux 开机自启脚本

    1.vi /home/dpf/mqtt.sh #!/bin/sh/home/dpf/Desktop/Udp_Single_Async_Mqtt_yuan/hwjc_udp_receive_mqtt & ...

  10. delphi调用存储过程

    一 . TAdoQuery对象下 1. mysql存储过程 sqls := Format(' call pro_addOneStudent (' + '''%s'',''%s'',''%s'',''% ...