A可以加强到p非素数
ultmaster edited 6 年,1 月前
ultmaster: A, C, D 是「用过的题」。当时现场情况非常惨烈,也不知道是同学们水平不大行,还是出题人水平不大行。
kblack: Huge gap between B and C.
by ultmaster. tag: 构造
由于 $p | mn$,又 $p$ 是质数,所以 $p | n$ 或 $p|m$,否则无解。不妨假设 $p|m$。可以将 $m$ 分成 $\frac{m}{p}$ 块,然后一块一块填即可。类似于这样:
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
by ultmaster. tag: 数学、贪心
首先注意到 $p$ 的取值应该就是 $\max {a_i} + 1$。然后相邻两项之间贪心地填东西。答案就是
$$n + \sum_{i=2}^{n} (a_i - a_{i-1} - 1) \bmod p$$
注意处理一下减出来的东西是负数的情况。
by ultmaster. tag: 数学
用 $r_i$ 表示第 $i$ 行有多少个 0,用 $c_i$ 表示第 $j$ 列有多少个 0,$b_{ij}$ 表示第 $i$ 行第 $j$ 列是否为 0。则 $cost(i,j)=r_i+c_j-b_{ij}$。
对原式进行展开得到:$\displaystyle(n-2) \sum_{i=1}^n c_i^2 + (n-2) \sum_{i=1}^n r_i^2 + 2C^2+C$。
其中 $C$ 为整个矩阵中 0 的个数。
每次修改操作至多只会影响一个 $c_i$ 和一个 $r_i$,将原来的 $c_i,r_i,C$ 的贡献撤回,然后重新计算贡献即可。
by ultmaster. tag: 字符串、哈希
可能的解肯定落在深度最深的节点上。可以先求出来。
注意到字符串的长度可能达到 $2 \cdot 10^5$,暴力建 Trie 会超时。一种方法是把后缀树建出来,然后把后缀树转化成后缀 Trie,判断是否和给出的树一样。缺点是实现难度较高(但是有板子啊?)。
可以采用哈希,求出每个终态对应的字符串的哈希值,组成一个集合;然后与原字符串的每个后缀的哈希值组成的集合进行比较判断。哈希的时候注意你采用的哈希是「大端」的还是「小端」的。
comment: 此题数据造起来真的是太恶心了。如果数据还是丢人了,那……没办法了啊?
comment 2: 第一版的 std 也是错的,错在没有判断是否所有的叶子节点都是终态。验题人居然跟出题人错在了同一个地方。要不是有稳健的 kblack,这题就锅了。
by zerol. tag: 数据结构、随机算法
解法一:
解法二:
zerol: 比较懒,造了随机数据。听说乱搞能过的时候,觉得这样似乎也挺不错的,就没有去卡,而是题面中添加了数据随机的提示。可惜的是,这题没法自闭了。
A题改成非素数的话,思路不变化吧?
楼上已经有人说了。