Loading

Codeforces Contest 1392

A. Omkar and Password

加法只会越来越大,所以我们希望找到一个最大的数,让他和旁边合并,这时它们的值更大了所以显然还是会和旁边不一样。所以除非所有数都一样,否则一定可以找到一个最大值使得他旁边至少有一个数和他不同,合并它们,最后可以变成只有一个数。

B. Omkar and Infinity Clock

显然这东西循环节为 \(2\),所以直接暴力就好了。

C. Omkar and Waterslide

做烂了,差分一下就完了。

D. Omkar and Bed Wars

找到两个相邻且不同的地方然后分类讨论即可。

E. Omkar and Duck

题意即为构造一个矩阵使得其没条路径的和都不一样
尝试给一些位置放 \(2^{k}\) 使得要想经过它只有一种走法
那么我们直接空一行放一行:

0 0 0 0 0 0 0 0
1 2 4 8 16 32 64 128
0 0 0 0 0 0 0 0
4 8 16 32 64 128 256 512
0 0 0 0 0 0 0 0
...

这样构造可以证明对于 \(x+y=k\) 个格子显然只会碰到一次,因为对于递增的 \(x\)\(y\) 是递减的。

F. Omkar and Landslide

手玩或暴力跑几组发现最后只会有一个地方 \(h_{i}+1=h_{i+1}\)。所以我们差分后已经知道最后会形成什么样的 \(h\) 了。显然一定是一段 h_1,然后一段 h_1+1,显然这种操作 \sum h_i 不会变,那么就很好算了。

G. Omkar and Pies

由于操作是从前往后做的,所以显然可以拆成两端后缀,讲 \([l,n]\) 的操作对 s 做,将 \([r+1,n]\) 的操作对 \(t\) 做。这样我们就得到了 \(O(n)\) 个序列,每个序列长度是 \(k\)。容易发现最后不同的位置的个数之和与后 \(1\) 的个数有关。假设与之后的状态是 \(u\),那么我们找到 \(u\) 的超集里在 s 中最小的位置,以及在 t 中最大的位置,这个可以dp求。复杂度 \(O(nk+2^k\times k)\)

H. ZS Shuffles Cards

容易发现答案即为 \(E(轮次)\times E(每轮步数)\)。后者无论是 PGF 还是爆算还是组合意义都很好得出,即为 \(\frac{n}{m+1}+1\)。考虑前者如何计算。

停时问题考虑停时定理 \(\min-\max\) 容斥。即为求出集合 \(T\) 最早的元素在第几轮全部出现,因为这里是考虑轮数所以不在 \(T\) 中的点都不重要了只需考虑 \(T\) 中的点和所有的鬼,出现概率为 \(\frac{|T|}{m+|T|}\),期望即为概率的倒数。

所以答案即为 \((\frac{n}{m+1}+1)\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\frac{m+i}{i}\)

I. Kevin and Grid

posted @ 2021-10-21 21:05  Semsue  阅读(33)  评论(0编辑  收藏  举报
Title