小朋友题
题号 | 1 | 2 | 3 | 4 |
题目名称 | 多线操作 | 星际网络 | 座位安排 | Cai0715的烦恼 |
文件名 | Dota.pas/c/cpp | Network.pas/c/cpp | Seat.pas/c/cpp | Cai0715.pas/c/cpp |
输入输出文件 | Dota.in/out | Network.in/out | Seat.in/out | Cai0715.in/out |
时间限制 | 1 second | 1 second | 1 second | 5 second |
空间限制 | 256 MB | 256 MB | 256 MB | 256 MB |
满分 | 10*10 | 10*10 | 10*10 | 10*10 |
有无部分分 | 无 | 无 | 无 | 无 |
比较方式 | 全文比较 | 全文比较 | 全文比较 | 全文比较 |
小朋友们加油
2009年11月11日
多线操作
【题目背景】
Dota,作为一个Warcraft III的自定义RPG地图,风靡了整个中国。bobo便是一个资深Dotaer。
【问题描述】
bobo喜欢玩Dota,而且喜欢多线操作。他可以同时操作N个不同的地方,并且把敌人打得落花流水。如果有T线需要操作,他会选择以下的策略来进行操作:
- 总操作量少的线拥有较高的优先级。
- 如果总操作量相等,剩余操作量少的拥有较高的优先级。
- 在每个时刻,bobo总是选择优先级最高的N线来操作,并且这N条线的操作速度相等。
现在bobo想请你帮他计算完成所有操作所需要的总时间。
【数据输入】
输入数据的第一行是三个整数T,N,M,表示bobo总共有T线需要操作,每个时刻可以同时操作N线。M表示bobo的APM(即bobo的总操作速度为(M操作量/秒))。
接下来T行,每行有一个实数Si和一个整数Pi,表示第i条线的总操作量为Si,已经操作了Pi%。
【数据输出】
输出一个实数,表示bobo完成所有的操作需要的时间,单位(秒)。四舍五入保留6位小数。
【样例输入】
6 4 82
100.00 70
40.08 60
50.23 17
7.23 19
10.02 91
1.00 7
【样例输出】
1.163549
【数据说明】
对于50%的数据,1<=T<=10000;
对于全部的数据,1<=T<=20000,1<=n<=2000 ,1<=n<=T;
对于全部的数据,0<=Pi<=100,Si<=20000,且最多有两位小数。
星际网络
【题目背景】
LY星系有很多个星球。它们之间通过一个巨大的互联网进行通讯。随着信息时代的发展,旧的网络已经不能满足需求,于是LY星系决定建设一个新的网络。
【问题描述】
LY星系有很多个星球,有些星球一天有几十个小时,有些星球一天只有几个小时。但每个星球的一个小时都是一样长的。因此每个星球一天的长短都不一样,这就导致了一个问题:星球上的生物都是在白天工作夜晚休息,因此每个星球每天都有上网高峰期和低峰期,当、很多星球同时达到高峰期时,网络便会变得异常拥堵,进而带来延迟。所以LY星系需要建设一个有足够大带宽的网络来避免这一问题。现在他们想知道,网络在一个小时内的最大流量是多少。
【数据输入】
输入数据的第一行为一个正整数N,表示LY星系共有N个星球。接下来N行,每行描述一个星球。对于每个星球的描述,开头为两个正整数D,T,表示这个星球一天有D个小时,当前位于T时刻(即某一天已经过去了T小时),接下来是D个正整数q0,q1……qD-1,其中qi表示第i小时到第i+1小时的流量。
【数据输出】
输出共一行,为一个整数Ans,表示一个小时内的最大流量。
【样例输入】
2
4 0 1 2 3 4
2 0 3 1
【样例输出】
6
【样例说明】
在4n+3时刻,流量=3+3=6达到最大。
【数据说明】
对于10%的数据,N<=10;
对于20%的数据,N<=100;
对于40%的数据,N<=10000;
对于70%的数据,N<=50000;
对于全部的数据,N<=100000,0<=T<D<=24,qi<=1000000;
座位安排
【题目背景】
A,B两个国家决定举行一次会议。
【问题描述】
总共有N个议员将参加这次会议。TT作为这次会议的工作人员要给这两个国家的议员分配座位。会场里有一个大的圆桌,座位围绕着圆桌摆放。为了公平起见规定每个国家的议员数都不能超过M,求本质不同的分配座位方案数。(即通过旋转后相同的方案只被计算一次)
【数据输入】
输入数据共一行,为N,M,意义同问题描述。
【数据输出】
输出共一行,为一个整数Ans,为答案除以1000003后的余数。
【样例输入】
4 3
【样例输出】
4
【样例说明】
共有14种方案:
AAAB AABA ABAA BAAA
AABB ABBA BBAA BAAB
ABAB BABA
ABBB BBBA BBAB BABB
其中方案1-4,5-8,9-10,11-14本质相同,因此答案为4。
【数据说明】
对于20%的数据,N,M<=15;
对于50%的数据,N,M<=100;
对于全部的数据,N,M<=1000。
【提示】
当M>=N时可能出现会议只有一个国家的议员。
Cai0715的烦恼
【题目背景】
传说中有一个系统叫做Ubuntu,大家都喜欢在命令行下工作。
某一天,Cai0715装了Ubuntu。发现有许多命令不会用,他为此很苦恼,想学习一些常用的命令,于是他请你写一个系统支持Ubuntu中的一些常用命令。
【问题描述】
你需要写个系统,能支持下列命令:(s代表一个字符串)(错误信息见样例)
命令 | 格式 | 内容 |
ls | ls 或ls |grep s | 对于ls命令,输出当前文件夹下所有文件和文件夹。对于ls |grep s命令,输出当前文件夹下名字含s的所有文件和文件夹。文件后用[f]标识,文件夹后用[d]标识。输出共一行,按字典序,用空格隔开,行末无多余空格。 |
cd | cd .或cd ..或cd s | 对于cd ..命令,回到上一级文件夹,若没有上一级文件夹,则不进行任何操作。对于cd .命令,停留在当前文件夹。对于cd s命令,进入当前文件夹下的s目录,若不存在或s为文件,输出错误信息(1)(2)。 |
mkdir | mkdir s | 对于mkdir s命令,在当前文件夹下创建名为s的文件夹,若当前文件夹下已有同名的文件或文件夹,输出错误信息(3)。 |
pwd | Pwd | 对于pwd命令,输出一行,为当前路径。 |
touch | touch s | 对于touch s命令,在当前文件夹下创建名为s的文件,若当前文件夹下已有同名文件或文件夹,则不进行操作。 |
rm | rm s或rm –r s | 对于rm s命令,删除当前文件夹下名为s的文件,若s是个文件夹,输出错误信息(4),若不存在s,输出错误信息(5)。对于rm –r s命令,删除当前文件夹下名为s的文件夹或文件,若不存在s,输出错误信息(6)。 |
rmdir | rmdir s | 对于rmdir s命令,删除当前文件夹下名为s的文件夹,若s为文件,输出错误信息(7),若不存在s,输出错误信息(8)。 |
最开始位于根目录“/”(不含引号)。
【数据输入】
输入数据的第一行是一个整数T,表示命令的数目。
接下来T行,每行有一条命令,如问题描述。
【数据输出】
见问题描述。
【样例输入】
36
mkdir a
touch c
cd c
ls
cd d
mkdir c
mkdir a
rm a
rm d
cd .
mkdir b
rm -r b
mkdir b
touch d
rm -r d
rm -r e
cd b
touch e
rmdir e
rmdir f
pwd
mkdir c
cd c
pwd
cd ..
touch ab
mkdir ac
mkdir bc
ls |grep a
ls |grep aa
ls
pwd
cd ..
cd ..
cd ..
pwd
【样例输出】(括号内的编号仅用于与问题描述中的错误编号对应,不必输出)
bash: cd: c: Not a directory (1)
a[d] c[f]
bash: cd: d: No such file or directory (2)
mkdir: cannot create directory `c': File exists (3)
mkdir: cannot create directory `a': File exists (3)
rm: cannot remove `a': Is a directory (4)
rm: cannot remove `d': No such file or directory (5)
rm: cannot remove `e': No such file or directory (6)
rmdir: failed to remove `e': Not a directory (7)
rmdir: failed to remove `f': No such file or directory (8)
/b
/b/c
ab[f] ac[d]
ab[f] ac[d] bc[d] c[d] e[f]
/b
/
【数据说明】
对于所有的命令,输入保证其合法性;
对于所有的文件名,保证其形如文件名.扩展名形式,其中文件名长度>=1,扩展名长度>=0,总长度不超过256,文件名和扩展名都只含大小写英文字母;
对于所有的文件夹名,保证只由大小写英文字母构成;
对于10%的数据,不含pwd命令;
对于20%的数据,不含ls |grep s命令;
对于20%的数据,不含rm,rm -r和rmdir命令;
对于30%的数据,命令总数不超过1000条;
对于50%的数据,命令总数不超过10000条;
对于全部的数据,C++标程可以在2s以内运行出正确答案;
对于全部的数据,均为随机生成;
对于全部的数据,输出不超过21MB,Pascal的writeln,C的printf以及C++的cout均可以在0.5秒内完成输出部分。
题解:
Dota:
考察大家使用+,-,*,/的能力。
最高分:100(多人)
平均分:63.57
解法一(标准解法):时间=总量除以速度。
解法二:线段树(CK)。
解法三:Heap模拟。
解法四:直接模拟。
评价:送分题
Network:
考察一些基本的数学算法。
最高分:40(sonicmisora)
平均分:11.79
解法一(超时):算出1-24的lcm,然后统计。
解法二:显然周期为13,17,19,23的星球可以取到最大值。剩下的数求lcm统计。
评价:简单题,很奇怪为什么没满分。分数主要来源于两个为0的数据和一个小数据,40分的小朋友接近正确思路了。
Seat:
考察动态规划和求逆元。
最高分:20(hyf)
平均分:1.43
解法一:动态规划。
评价:稍微需要动下脑筋的动态规划。求逆元可能是这套题唯一超出NOIP考纲的地方吧,不过不求逆元应该有20分左右。
Cai0715:
考察对树的掌握及代码调试能力。
最高分:100(CK)
平均分:5.00
解法一:直接模拟。
评价:出这道题本意是为了不让大家在一个小时内做完所有题然后无聊,题目不难,但数据较全面,有些同学写完了得0分,可惜。得20分的两个小朋友该打。
CK不愧为模拟王Orz。