#P15832. [2025年山东集训第三轮]Diana的梦境
[2025年山东集训第三轮]Diana的梦境
题目背景
结束了一天的直播,疲倦的 Diana 很快便进入了梦乡。
“咦,这被子怎么这么短,都盖不到我的脚……” 朦胧中,Diana 突然感觉到了来自脚底的一丝凉意。她知道一定是因为自己一米八太高了,把被子横着盖了。于是她很努力地把被子翻过来,可她的力气太小了,搬动被子对她来说非常困难。
于是 Diana 突发奇想,翻转被子的过程和数学上的转置是相似的!而因为自己是枝江天才少女,所以只需要将被子视为矩阵,然后执行转置就可以了。不过,翻完之后,被子怎么还是盖不到自己的脚呢?Diana 猛然发现,自己的被子竟然是正方形的!难道真的因为自己睡了一觉就长高了,被子已经不够长了吗……
“原来是梦啊……” 醒来的 Diana 回忆这一切,觉得又有趣又心酸,自己仍然是一米吧的自己,而被子即使是矩形的,她也没有短边那么高。唯一有趣的点或许在于转置被子这一趣味的想象,她决定只向她的朋友分享梦中的这一部分。
题目描述
给定一个 的 bool 矩阵 ,你需要对其进行转置。
你可以使用 个长度为 的辅助 bool 数组 ,其中 初值为 ,剩余数组的初值全为 。
你可以调用以下操作:
AND x y z:将 赋值为 ,你需要保证 。OR x y z:将 赋值为 ,你需要保证 。XOR x y z:将 赋值为 ,你需要保证 。SH x y z:将 赋值为 循环左移 位,即 最后的值为 ,你需要保证 ,。SET x y z:将 赋值为 ,你需要保证 ,,。
你需要在尽可能少的操作次数内使得对于所有矩阵 ,在经过你进行的操作后,对于 都有
输入格式
一行一个整数 ,代表矩阵的大小。
输出格式
第一行输出一个整数 ,代表操作数量。
接下来 行,每行按照题目描述中的格式输出一条命令。
你需要保证 ,。
样例 1 输入
1
样例 1 输出
0
样例 1 解释
本来这里有一个 的样例,但是为了让选手获得更多分数,这个样例最终成为了一个测试点。
数据范围
本题共 4 个测试点。
对于前三个测试点,所有符合要求的输出都可以获得满分。
对于第四个测试点,如果你的输出合法,你的分数会按照以下公式计算并向下取整到最近的整数:
$$\mathrm{Score}=30\cdot \log_{10}\left(\frac{5\times 10^5}{\max(m,52000)-47000}\right).$$| 测试点 | 分数 | |
|---|---|---|
| 1 | 10 | 2 |
| 2 | 15 | 32 |
| 3 | 512 | |
| 4 | 60 | 2048 |