#F. 「Jason-1」Ball

    提交答案题

「Jason-1」Ball

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

这是一道提交答案题。

你有 1010 个盒子,每个任务会给出一个 nn,初始时前 nn 个盒子内可能有一些球,后 10n10-n 个盒子为空。

用小写字母表示每种颜色的球,初始时最多只有三种颜色的球,分别用 a,b,c\tt a, b, c 表示。而在程序中,你可以使用任何小写字母表示对应颜色的球。

定义一个盒子包含一个字符串,表示对于每种颜色的球,盒子中出现的个数不小于字符串中出现的个数。

从一个盒子中删除一个字符串,表示对于字符串中每一个小写字母代表的球,从盒子中取走一个相同颜色的球。删除的前提是需要满足此盒子包含该字符串。

向一个盒子中放入一个字符串,表示对于字符串中每一个小写字母代表的每个球,向盒子中放入一个相同颜色的球。

你需要写一个程序完成一些任务,程序包含下面几种语句可供使用:

  • change x s y t,其中 x,yx, y 是不超过 1010 的非负整数,s,ts, t 是仅由小写字母或单个字符 @ 组成的非空字符串(如果为 @ 则表示将该字符串视作空串)。如果 xx00,则将 kk11 遍历到 1010,否则 k=xk = x。如果盒子 kk 中包含字符串 ss,从其中删除 ss,并在盒子 yy 中放入字符串 tt,如果 y=0y=0 则在当前的 kk 中(原地)放入,这样就视为成功执行命令。每当成功执行命令后,立刻回到上一个断点,无论 kk 是否完全遍历。如果没有成功执行命令,跳转到下一条语句。
  • # 表示一个断点。你必须以一行断点结束整个程序。认为第 00 行也是一个断点,此断点不计入代价。

语句数可简单地视为程序中 change# 的数量之和,第 00 行的虚拟断点不计入,最后一行的断点计入。

断点数可简单地视为程序中 # 的数量。第 00 行的虚拟断点不计入,最后一行的断点计入。

你不能使用超过 100100 条语句,超过 1010 的盒子或是非小写字母的球,任意一个盒子中某种颜色的球的个数均不能超过 10810^{8},程序中的单个字符串长度不能超过 200200,你的程序单组数据实际遍历的语句条数不能超过 4×1054 \times 10^5,单组数据实际判断包含的字符集大小之和不能超过 10710^7(参考下发的检验器)。

约定 nn 表示输入至多使用的盒子数,mxmx 表示初始时每个盒子中每种颜色球个数的最大值,maxmax 表示初始时所有盒子中球总数的最大值,sumsum 表示初始时所有盒子中球的总数。任务中未提及的盒子必须保持原状,你需要分别完成下面 1010 个任务。

  1. n=10,sum100n=10, sum \le 100,你需要将所有 a\tt a 颜色球放入盒子 11,所有 b\tt b 颜色球放入盒子 22,所有 c\tt c 颜色球放入盒子 33

  2. n=10,sum100n=10, sum \le 100,你需要将所有 a\tt a 颜色的球改为 b\tt b 颜色的球,将所有 b\tt b 颜色的球改为 c\tt c 颜色的球,将所有 c\tt c 颜色的球改为 a\tt a 颜色的球,这三个操作应同时完成。

  3. n=10,sum100n=10, sum \le 100,你需要将所有不包含 a\tt a 颜色球的盒子清空。

  4. n=10,sum100n=10, sum \le 100,你需要给所有非空的,不包含 a\tt a 颜色球的盒子放入一个 a\tt a 颜色球。

  5. n=5,sum5n=5, sum \le 5,你需要将所有球按照颜色从小到大(a<b<c{\tt a} < {\tt b} < {\tt c})依次放入盒子 11sumsum,每个盒子恰好只放一个球,初始的球不保留。

  6. n=10,sum100n=10, sum \le 100,对于每个盒子,只保留一个出现次数最多的颜色的球,如果有多种颜色出现次数最多,将其变为空集。

  7. n=10,sum100n=10, sum \le 100,对于每个盒子,只保留出现次数最多的颜色的球,如果有多种颜色出现次数最多,保留颜色最小的(a<b<c{\tt a} < {\tt b} < {\tt c})。

  8. n=1,mx10n=1, mx \le 10,记 a,b,c\tt a, b, c 颜色的球的个数为 A,B,CA, B, C,你需要对于满足 1x51 \le x \le 5 的整数 xx 使得盒子 xx 在最终恰好有 A+Bx+Cx2A+Bx+Cx^2a\tt a 颜色球,不能有其它颜色球。

  9. n=5,max10n=5, max \le 10,所有 nn 个盒子中球总数相等。将每个盒子中的球按从小到大排序,组成一个字符串,保证字符串两两不同。你需要对于每个字符串求出其字典序排名,按字典序从小到大依次将盒子改为 a,b,c,d,e\tt a, b, c, d, e

  10. n=5,max10n=5, max \le 10,你需要对 nn 个盒子求前缀和,即将前面所有盒子的球复制一份放入自己。

注:子任务按某种规则排序,与难度无关。

输入格式

该题为提交答案型试题,每个测试点对应的任务见【题目描述】。

输出格式

针对给定的 1010 个任务,你需要分别将你的程序命名为 1.out10.out,并将这 1010 个文件直接压缩为 zip 文件提交。

每个文件中需要包含若干行。

第一行一个非负整数 LL,代表你使用的语句数。

接下来 LL 行,每行一个语句。

你必须以一个断点结尾。

样例

下发文件 中的 sample 文件夹。

自定义校验器数据格式

第一行,两个整数 T,VT, V,分别表示数据组数与评分参数。

对于接下来每组数据:

第一行,两个整数 n,mn,m,表示需要描述的输入盒子数与输出盒子数。

第二行,nn 个字符串,描述输入时前 nn 个盒子的状态。

第三行,mm 个字符串,描述输出时前 mm 个盒子的状态,你仍然需要保证其它盒子为空

同样地,使用 @ 表示空串

自定义校验器使用方法

checker.cpp 编译后,在命令行执行

checker [in] [out] [ans]

其中 [in] 为测试数据,[out] 为你需要测试的程序,[ans] 输入和 [in] 相同的内容。

例如你需要测试第一个样例,且你的程序名为 1.out,需先将 1.in 复制到当前目录,并执行

checker 1.in 1.out 1.in

评分标准

对于每个测试点,其内部会评测若干组测试数据。

若你的输出出现下列情况,那么该测试点不得分:

  • 输出与要求不符。
  • 出现无法识别或不合法的语句。
  • 某个盒子中某种颜色的球数量超过 10810^8
  • 使用超过 100100 条语句。
  • 程序中单个字符串长度超过 200200
  • 使用不在 111010 之间的盒子。
  • 使用非小写字母颜色的球。
  • 单组数据实际语句遍历次数大于 4×1054 \times 10^5
  • 单组数据实际判断包含的字符集大小之和超过 10710^7(参考下发的检验器)。

语句数可简单地视为程序中 change# 的数量之和,第 00 行的虚拟断点不计入,最后一行的断点计入。

断点数可简单地视为程序中 # 的数量。第 00 行的虚拟断点不计入,最后一行的断点计入。

一个程序的代价是你给出的断点数量乘以程序的语句数,记作 valval

否则设对应子任务的评分标准为 VV,那么你的得分为:

$$\mathrm{score}=\begin{cases}11&V>val\\\Big\lfloor\frac{10}{\exp\left(1-\frac {V}{val}\right)}\Big\rfloor&\text{otherwise.}\end{cases} $$

下面给出各个任务对应的评分标准 VV:

编号 11 22 33 44 55 66 77 88 99 1010
VV 1616 2626 88 1010 1818 2020 3030

【MX-X4】梦熊 X 组 · 满月赛 & Jason Round 1

未参加
状态
已结束
规则
IOI
题目
6
开始于
2024-9-16 13:00
结束于
2024-9-16 18:00
持续时间
5 小时
主持人
参赛人数
212