【每日c++训练】2022年11月28日

小朋友题

题号

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线需要操作,他会选择以下的策略来进行操作:

  1. 总操作量少的线拥有较高的优先级。
  2. 如果总操作量相等,剩余操作量少的拥有较高的优先级。
  3. 在每个时刻,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。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值