题目
[5.小 Q 的修炼](#5.小 Q 的修炼)
1.集合练习
时间限制:1s 内存限制:128MB
为了让选手们重视文化课,小A特意加入了一道 大A老师的数学练习:
求将一个集合 U={1,2,3,⋯ ,n}划分成两个子集 S,T,使得 ∣S∣∉S,∣T∣∉T 的方案数。
由于选手都不会高精度,所以答案只需要对 998244353取模即可。
输入格式
一行一个整数 n。
输出格式
一行,一个整数,表示答案。
输入输出样例
输入 #1
3
输出 #1
2
输入 #2
6
输出 #2
10
输入 #3
65535
输出 #3
459810767
说明/提示
样例解释
#1: 两种合法的划分方案为 {1,3},{2} 与 {2},{1,3}。
数据范围
对于 100%的数据,保证 1≤n≤10^5。
2.高精度乘方
时间限制 1s 空间限制 125MB
题目描述
给予两个整数A和B,求A的B次方(即A^B)
输入样例
6 3
输出样例
216
数据范围
0<A,B<=10^2000
3.远古计算机
时间限制 1s 空间限制 256MB
题目背景
编程大陆是一片神奇的土地,在厚厚的冰层下埋藏着一个巨大的宝藏。探险家小A挖穿冰层到达了宝库,但他发现了一个令人发愁的问题。一共有五座宝库,每个宝库是由某些远古计算机控制的。由于年代久远,这些计算机里的程序已经消失不见了,只有给这些计算机重新填写代码并且顺利运行,输出了正确结果才能触发开门的机关。
题目描述
每一个宝库大门由一个计算机集群控制,计算机之间用数据线相连以便传输数据。但是有很多数据线已经损坏了,所以只留下了一部分连线。一开始数据线上没有数据,当一台计算机向数据线上写入时,数据线上就有了一个整数。每条数据线上最多可以同时传输一个整数,当整数被读取后便会消失,数据线就又回到没有数据的状态。
每台远古计算机有两个储存单元,分别名为 a 和 b,每个储存单元能够储存一个 −2147483648 到 2147483647 之间的整数。
每个时刻,每台远古计算机可以执行一条指令,一共有以下几种指令:
mov reg val
:将储存单元reg
的值赋值为val
的值;add reg val
:给储存单元reg
加上val
的值;dec reg val
:给储存单元reg
减去val
的值;mul reg val
:给储存单元reg
乘以val
的值;div reg val
:给储存单元reg
除以val
的值,这里的除法是向零取整的除法,如 −52=−22−5=−2;and reg val
:给储存单元reg
二进制与上val
的值;or reg val
:给储存单元reg
二进制或上val
的值;xor reg val
:给储存单元reg
二进制异或上val
的值;jmp val
跳转到整个程序第val
条语句,语句从程序开头开始,用从 11 开始的正整数计数;jz reg val
:如果reg
的值为 00,那么跳转到第val
行;jnz reg val
:如果reg
的值不为 00,那么跳转到第val
行;jgz reg val
:如果reg
的值严格大于 00,那么跳转到第val
行;jsz reg val
:如果reg
的值严格小于 00,那么跳转到第val
行;read x reg
:从远古计算机 xx 读取一个数到储存单元reg
当中,如果数据线上缓存了一个数字,将读取这个数字并返回,否则等待下个周期再次尝试读取。x=0x=0 时视为从标准输入数据读取一个数;write val x
:将val
的数值向远古计算机 xx 方向所在数据线写入,当且仅当数据线上没有存有数据才会成功写入,否则等待下个周期再次尝试写入。x=0x=0 时视为向标准输出数据写出一个数。
reg
表示一个储存单元,只能为 aa 或者 bb 之一。
val
表示一个储存单元或者一个数字的值,比如填入 aa 表示 aa 中储存的值或者填入 233 表示 233 这个数字。
一台远古计算机读写指令中 xx 只有与当前远古计算机直接有数据线相连,或者 x=0x=0 才被视为合法指令。
每台远古计算机的标准输入输出独立,远古计算机之间互不影响,即每台远古计算机都有独立的一个标准输入端和一个标准输出端。
每个周期计算时,所有需要执行 write
指令的远古计算机先计算,然后需要执行 read
指令的远古计算机再计算,需要执行其余指令的远古计算机最后计算。
在读取时,如果标准输入数据没有任何可以继续读取的数据,该远古计算机将进入永远等待状态。
一台远古计算机如果执行完了最后一条指令,将会重新从第一条指令开始执行。
如果一台远古计算机没有任何指令,该计算机将永远处于等待状态。
指令计数是从 1开始的正整数。
一条数据线上最多只能暂存一个数据,两台计算机之间只有一条数据线,即可能读取自己上一轮写入的数据,如果两端的远古计算机同时读取或写入同一条数据线上的 数据,结果将不可预知。
不存在写入标准输入的方法或是从标准输出当中读取数据的方法。
比如如下样例是从 1 号计算机的标准输入读入两个数,并从 2 号计算机的标准输出输出两个数之和。
node 1
read 0 a
read 0 b
write a 2
write b 2
node 2
read 1 a
read 1 b
add a b
write a 0
而以下写法是错误的
node 1
read 0 a
read 0 b
add a b
write a 0
node 2
mov a a
因为正确答案中,一号远古计算机的标准输出为空,而二号远古计算机的标准输出才是两个数之和。
子任务
子任务 1
1 号远古计算机的标准输入将会有不超过 100 个非负整数,按照原顺序输出到 1 号远古计算机的输出当中。
子任务 2
1 号远古计算机一个非负整数 k,按照原输入顺序将斐波那契数列第 k 项输出到 1 号点的标准输出当中,输入数据保证第 k 项不超过 10^9。斐波那契数列通项公式为 F0=0,F1=1,Fn=Fn−1+Fn−2(2≤n)。
子任务 3
1 号远古计算机的标准输入将会有不超过 100 个非负整数,按照原顺序输出到 n 号远古计算机的输出当中。
子任务 4
第 1 到 50 号远古计算机分别输入 1 个数,将这 50 个数从 51 到 100 号远古计算机输出,输出顺序任意,每个远古计算机输出数字个数任意。
子任务 5
第 1 到 10 号远古计算机各输入 1 个数,将这些数对应从 100 到 91 号远古计算机输出,即 ii 号点输入的数需要从 101−i号点输出。
输入格式
这是一道提交答案题,共有 5 组输入数据,这些数据命名为 oldcomputer1.in
~ oldcomputer5.in
。
这些文件描述了远古计算机之间的连线状态。
文件的第一行是三个非负整数 x,n和 m,表示测试点编号、远古计算机的个数与他们之间的连线条数,远古计算机是从 1 到 n 标号的。
接下来 m 行,每行两个正整数 x,y,表示计算机 x 和计算机 y 之间通过数据线直接相连。
输出格式
对于每组输入数据,你需要提交相应的输出文件 oldcomputer1.out
~ oldcomputer5.out
。
这些文件描述了每台远古计算机的代码内容。
文件由多个代码块组成,每个代码块的具体格式如下:
第一行为一个字符串 node
与一个 11 到 nn 之间的整数 aa,由一个空格隔开,表示接下来是计算机 aa 的指令。
接下来多行为该计算机的具体指令内容。
每台计算机的指令应当最多出现一次,否则将会出现未知错误。
所有计算机的指令总条数应当不超过 106106 行。
输入输出样例
无
4.互联网
时间限制 :1s 内存限制:256.MB
问题描述
2124年,A星球上的互联网忽然崩塌,所有网站皆无法访问。
A星球上立即调动数百名网络工程师紧急修复,但是全部失败
虽然全都失败了,可是他们发现了一个修复的办法
但是他们虽然有办法,却没法修复,具体的办法如下:
在A星球上,每个用户访问互联网的时候都会产生一串数字,作为这个
用户互联网的访问地址
每一个网页都有它自己的ID,不同的网页之间的ID保证不同。(ID的长度上限为n个字符)
每个用户访问网址时都有他自己的访问编码
当访问地址为100的用户访问ID为abc的网址时,这个用户的访问编码就是100.abc
而互联网崩塌的原因就是因为网址太多了,出现了ID重复的网址,导致浏览器无法识别用户想要访问的网址,从而崩溃。
发现崩溃的原因后,互联网工程师们线下调查了每个网站的平均重要性。
现在你必须要删除一些ID重复的网址,并且删除后网址的平均重要性要最高
每个用户都有一个自己对于所有网址的平均满意度,请你帮忙计算,删除哪些重复的ID,既能
保证浏览器正常运行,又能保证所有用户的平均满意度最高?
输入格式
第一行,3个数,分别为n(ID长度上限),u(用户总数)w(网址总数量)
接下来的w行,每一行输入一个id,代表一个网址
接下来的u行,每行输入一个用户的互联网访问网址,和该用户对所有网址的满意度
输出格式
2行。
第一行,删除后平均满意度最高的情况(输出所有被删除网址的ID和它在输入中的排序)
第二行,所有可以删除后网址数量最多且浏览器正常运行的情况数量
样例输入
3 3 4
aa
bb
bb
aa
100 1 2 3 4
200 1 2 3 4
300 1 1 6 6
样例输出
1 aa 2 bb
4
评测用例规模与约定
0<n,u,w<=1000
保证所有输入符合上述要求和数据范围,并且所有数据均为有效数据。
5.小 Q 的修炼
时间限制1.00s 内存限制128.00MB
题目描述
小 Q 最近发现了一款新游戏,游戏的目标是从一个新手修炼成为武功高强的大侠。面对错综复杂的游戏世界,小 Q 要对他面临的每件事情做出谨慎的选择。例如,是否参加一个陌生人邀请的比武;同意或是拒绝用宝剑交换他人的武功秘籍......而小 Q 做出的每一个选择都有可能影响到他以后的发展:面对一个高手,若主动与之比武,很可能会损失惨重;但若不去比武,也许今后就再也见不到这个高手了。
对着这个游戏,小 Q 玩了很多次仍然玩不出他想要的结局,于是他费尽千辛万苦找到了游戏的剧本。令人惊讶的是,游戏的剧本并不像我们平时见到的剧本,反而很像代码。这个剧本是这样描述的:
- 量:有 2 种量,常数和变量。
- 常数:一个整数。
- 变量:初始值为 0 的可变整数,不同变量用不同正整数编号区分。
- 事件:整个剧本由若干个事件构成。所有的事件按照给定的顺序从 1 开始依次编号。事件共有 3 种:普通事件、选择跳转和条件跳转。
- 执行位置:一个整数,表示接下来将会执行的事件编号,如果不存在这个编号的事件则停止,即游戏到了一个结局。最初的时候执行位置为 1。
- 普通事件:一个变量增加或减少一个量的值。之后执行位置增加 1。
- 选择跳转:两个整数。执行到这里时玩家需要在这两个整数中选择一个,之后执行位置将被修改为这个整数。
- 条件跳转:两个量和两个整数。执行到这里时,若第一个量小于第二个量,则执行位置将被修改为第一个整数,否则将被修改为第二个整数。
小 Q 认为,整个游戏是希望一个叫做「成就值」的变量(编号为 11)最大。
输入格式
该题为提交答案型试题,所有输入数据 train1.in
~train10.in
已在附加文件中。
输入的第一行包含两个正整数 n,m,表示事件的个数和变量的个数。
接下来有 n 行,每行描述一个事件。这些事件按照给出的顺序依次编号为 1 到 n。
描述量和事件的格式如下(格式中 #
表示空格)
类型 | 格式 | 例子 |
---|---|---|
常数 | c#整数 |
c -2 |
变量 | v#正整数 |
v 5 |
普通事件 | 变量#+#量 |
v 1 + c 1 |
普通事件 | 变量#-#量 |
v 2 - c 2 |
选择跳转 | s#整数 1#整数 2 |
s 10 20 |
条件跳转 | i#量 1#量 2#整数 1#整数 2 |
i c 99 v 2 0 1 |
输出格式
针对给定的 10个输入文件 train1.in
~train10.in
,你需要分别提交你的输出文件 train1.out
~train10.out
。
每个文件需要输出若干行,每行输出一个字符 1
或 2
,表示执行过程中遇到的每个选择跳转所作的选择。输出的行数需要严格等于此次游戏执行过程中遇到的选择跳转的个数。
输入输出样例
输入 #1
11 2
v 2 + c 19
i v 2 c 3 7 3
s 4 7
v 1 + c 13
v 2 - c 3
i c 0 c 1 2 0
i v 2 c 5 12 8
s 9 12
v 1 + c 23
v 2 - c 5
i c 0 c 1 7 0
输出 #1
1
1
1
2
1
1
说明/提示
评分标准
对于每组数据,我们采用如下方式评分:
- 如果你的输出不合法,得 0 分。
- 如果你的输出执行了超过 10^6 行剧本,得 0 分。
- 如果你的输出能让剧本正常结束,得 1 分。
- 如果你的输出能让剧本正常结束,且结束时成就值为正数,得 2 分。
我们设置了 8 个评分参数 a3,a4,...,a10
如果你的输出能让剧本正常结束,且结束时成就值不小于 as,得 s 分。
如果以上条目有多项满足,则取满足条件中的最高得分。