luogu#P11067. 【MX-X4-T7】「Jason-1」Ball
【MX-X4-T7】「Jason-1」Ball
题目描述
这是一道提交答案题。
你有 个盒子,每个任务会给出一个 ,初始时前 个盒子内可能有一些球,后 个盒子为空。
用小写字母表示每种颜色的球,初始时最多只有三种颜色的球,分别用 表示。而在程序中,你可以使用任何小写字母表示对应颜色的球。
定义一个盒子包含一个字符串,表示对于每种颜色的球,盒子中出现的个数不小于字符串中出现的个数。
从一个盒子中删除一个字符串,表示对于字符串中每一个小写字母代表的球,从盒子中取走一个相同颜色的球。删除的前提是需要满足此盒子包含该字符串。
向一个盒子中放入一个字符串,表示对于字符串中每一个小写字母代表的每个球,向盒子中放入一个相同颜色的球。
你需要写一个程序完成一些任务,程序包含下面几种语句可供使用:
change x s y t
,其中 是不超过 的非负整数, 是仅由小写字母或单个字符@
组成的非空字符串(如果为@
则表示将该字符串视作空串)。如果 为 ,则将 由 遍历到 ,否则 。如果盒子 中包含字符串 ,从其中删除 ,并在盒子 中放入字符串 ,如果 则在当前的 中(原地)放入,这样就视为成功执行命令。每当成功执行命令后,立刻回到上一个断点,无论 是否完全遍历。如果没有成功执行命令,跳转到下一条语句。#
表示一个断点。你必须以一行断点结束整个程序。认为第 行也是一个断点,此断点不计入代价。
语句数可简单地视为程序中 change
和 #
的数量之和,第 行的虚拟断点不计入,最后一行的断点计入。
断点数可简单地视为程序中 #
的数量。第 行的虚拟断点不计入,最后一行的断点计入。
你不能使用超过 条语句,超过 的盒子或是非小写字母的球,任意一个盒子中某种颜色的球的个数均不能超过 ,程序中的单个字符串长度不能超过 ,你的程序单组数据实际遍历的语句条数不能超过 ,单组数据实际判断包含的字符集大小之和不能超过 (参考下发的检验器)。
约定 表示输入至多使用的盒子数, 表示初始时每个盒子中每种颜色球个数的最大值, 表示初始时所有盒子中球总数的最大值, 表示初始时所有盒子中球的总数。任务中未提及的盒子必须保持原状,你需要分别完成下面 个任务。
-
,你需要将所有 颜色球放入盒子 ,所有 颜色球放入盒子 ,所有 颜色球放入盒子 。
-
,你需要将所有 颜色的球改为 颜色的球,将所有 颜色的球改为 颜色的球,将所有 颜色的球改为 颜色的球,这三个操作应同时完成。
-
,你需要将所有不包含 颜色球的盒子清空。
-
,你需要给所有非空的,不包含 颜色球的盒子放入一个 颜色球。
-
,你需要将所有球按照颜色从小到大()依次放入盒子 到 ,每个盒子恰好只放一个球,初始的球不保留。
-
,对于每个盒子,只保留一个出现次数最多的颜色的球,如果有多种颜色出现次数最多,将其变为空集。
-
,对于每个盒子,只保留出现次数最多的颜色的球,如果有多种颜色出现次数最多,保留颜色最小的()。
-
,记 颜色的球的个数为 ,你需要对于满足 的整数 使得盒子 在最终恰好有 个 颜色球,不能有其它颜色球。
-
,所有 个盒子中球总数相等。将每个盒子中的球按从小到大排序,组成一个字符串,保证字符串两两不同。你需要对于每个字符串求出其字典序排名,按字典序从小到大依次将盒子改为 。
-
,你需要对 个盒子求前缀和,即将前面所有盒子的球复制一份放入自己。
注:子任务按某种规则排序,与难度无关。
输入格式
该题为提交答案型试题,每个测试点对应的任务见【题目描述】。
输出格式
针对给定的 个任务,你需要分别将你的程序命名为 1.out
∼10.out
,并将这 个文件直接压缩为 zip
文件提交。
每个文件中需要包含若干行。
第一行一个非负整数 ,代表你使用的语句数。
接下来 行,每行一个语句。
你必须以一个断点结尾。
见附件 down.zip 中的 sample 文件夹
见附件 down.zip 中的 sample 文件夹
提示
【自定义校验器数据格式】
第一行,两个整数 ,分别表示数据组数与评分参数。
对于接下来每组数据:
第一行,两个整数 ,表示需要描述的输入盒子数与输出盒子数。
第二行, 个字符串,描述输入时前 个盒子的状态。
第三行, 个字符串,描述输出时前 个盒子的状态,你仍然需要保证其它盒子为空。
同样地,使用 @
表示空串。
【自定义校验器使用方法】
将 checker.cpp
编译后,在命令行执行
checker [in] [out] [ans]
其中 [in]
为测试数据,[out]
为你需要测试的程序,[ans]
输入和 [in]
相同的内容。
例如你需要测试第一个样例,且你的程序名为 1.out
,需先将 1.in
复制到当前目录,并执行
checker 1.in 1.out 1.in
【评分标准】
对于每个测试点,其内部会评测若干组测试数据。
若你的输出出现下列情况,那么该测试点不得分:
- 输出与要求不符。
- 出现无法识别或不合法的语句。
- 某个盒子中某种颜色的球数量超过 。
- 使用超过 条语句。
- 程序中单个字符串长度超过 。
- 使用不在 到 之间的盒子。
- 使用非小写字母颜色的球。
- 单组数据实际语句遍历次数大于 。
- 单组数据实际判断包含的字符集大小之和超过 (参考下发的检验器)。
语句数可简单地视为程序中 change
和 #
的数量之和,第 行的虚拟断点不计入,最后一行的断点计入。
断点数可简单地视为程序中 #
的数量。第 行的虚拟断点不计入,最后一行的断点计入。
一个程序的代价是你给出的断点数量乘以程序的语句数,记作 。
否则设对应子任务的评分标准为 ,那么你的得分为:
$$\mathrm{score}=\begin{cases}11&V>val\\\Big\lfloor\frac{10}{\exp\left(1-\frac {V}{val}\right)}\Big\rfloor&\text{otherwise.}\end{cases} $$下面给出各个任务对应的评分标准 :
编号 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|