2023.6.26 闲话
看到 yspm 闲话一周年了,好像我马上也要一周年了阿!
名言:人皆贺之。——《淮南子·人间训》
ARC106D Powers
模数是 \(998244353\),十分良心,为良心出题人点赞!
首先容斥去掉紧的上下界限制,那么二项式定理展开即可:
那么处理数列多幂次求和后就是二项卷积,用经典方法做好像就是 \(\Theta(n\log^2n+k\log k)\) 了,我不是很会分析 .
但是数据范围较小,直接暴力 \(\Theta(nk+k^2)\) 也可以通过,很好 .
ARC106F Figures
啥啊。
根据 Prüfer 序列的结论,枚举度数序列 \(\{d\}\) 则可以得到答案的表达式:
由于是二项卷积所以考虑用 EGF 刻画:
然后直接算就行了,时间复杂度 \(\Theta(n)\) .
ARC107D Number of Multisets
令 \(dp_{i,j}\) 表示前 \(i\) 个数凑出 \(j\) 的方案数,不过 \(j\) 要是整数才好转移 .
注意到一个合法的方案肯定能从 1 出发,经过若干次加 1 或者除以 2 得到(具体可以参考秦久韶算法).
于是转移就考虑给 \(j\) 减一或者乘 2 即可,具体的:
这样就可以了,时间复杂度 \(O(n^2)\) .
ARC107E Mex Mat
首先观察发现斜着的几条对角线状物经过几轮迭代后就不变了,然后按照这个结论小范围暴力就能过了,时间复杂度 \(\Theta(n)\) .
以下是一个证明(源于 dario2994 在 CF 上发送的证明 及其评论):
断言:
- 方阵中不可能存在形为
x x
的子矩阵 . - 方阵中不可能存在子矩阵
2 1 2
. - 方阵中不可能存在子矩阵
1 2 1
. - 方阵中不可能存在子矩阵
0 2 0
.
证明:
断言 1 是显然的 .
对于断言 2,如果存在一行 2 1 2
,不难推出上一行必然是 ? 0 0
,这显然是不可能的,断言 3 类似 .
对于断言 4,如果存在一行 2 1 2
,不难推出上一行必然是 2 1 2
,这是不可能的 .
由此,证明了四个断言 .
从而,对于子矩阵 x y z
来说,通过讨论 \(y\) 的取值可以得到必有 \(\newcommand{\mex}{\operatorname{mex}}y=\mex(x,z)\),过程繁而不难,略去 .
从而,可以得到:
然而,对于第一行,最基础的断言是不正确的,从而需要对 \(n,m\) 较小的情况特殊处理,也就是需要证明,经过常数步之后,四个断言被同时满足(或者结论成立). 这个常数不能太大 .
断言 1 总是正确的,所以之后的讨论只能基于断言 1 进行 . 让我们讨论一个最基本的 \(4\times 4\) 方格,其中不含第一行第一列:
. . . .
. . . .
. . x z
. . w y
那么:
-
如果 \(w\neq z\),则根据断言 1,\(x,y\) 肯定与 \(w,z\) 都不同,因为值域大小只有 2,所以 \(x=y\) .
-
如果 \(w=z\),假设 \(x\neq y\),于是局面可以被重写为:
. . . . . . . ? . . a b . ? b c
根据断言 1,两个
?
只能等于 \(a\) 或 \(c\),接下来,有两种情况:- 两个
?
都是 \(c\) . 那么根据断言 1,可以填出:
这表明 \(a=\mex(b,b)=c\),矛盾 .. . . . . . b c . b a b . c b c
- 两个
?
中至少有一个 \(a\) . 不妨令左面那个问号是 \(a\):
那么可以得到 \(\mex(a,a)=b\) 和 \(\mex(b,b)=c\),那么经过讨论可以得出必然有 \(a=2,\ b=0,\ c=1\):. . . . . . . ? . . a b . a b c
用类似的方法,可以导出. . . . . - v ? - u a b t a b c
t u v
必然是0 1 0
或1 0 1
,则根据断言 1 可以知道,其左上的两个位置-
都是2
,从而根据 \(\mex(2,2)=0\),可以知道 \(t=1,\ u=0,\ v=1\),那么根据断言 1,?
肯定是 2,然后不难根据 mex 的定义得出他的上面是一个0
,又根据断言 1,肯定0
的左边是2
. 有点麻烦,看一下图:
但是,我们发现这个构造一定是不合法的,因为它指出 \(\mex(2,2)=1\),矛盾 .. . 2 0 . 2 1 2 2 0 2 0 1 2 0 1
从而,\(w=z\) 时,必然有 \(x=y\) .
- 两个
从而,命题得证 . 也可以由此知道,4 次迭代之后,结论 \(\rm (R)\) 一定成立 .
ARC108C Keep Graph Connected
🤡 . 先随便搜出一棵 DFS 树,给根随便一个权值,然后向下进入,如果一个点父亲的点权和父边的边权相同就赋随便一个点权否则赋边权就行了 .
从而也可以得出必然有解 . 时间复杂度 \(\Theta(n)\) .
ARC108D AB
根据数学直觉答案肯定是不超过 5 项的线性递推,暴力算前几项后 BM 即可 .
咋是分类讨论啊 .
不妨令 \(c_{\sf AB}=\tt A\),另一方面本质相同 .
到这里生成出的是形如 \(\tt AAA\dots AB\) 的序列,那么考虑 \(c_{\sf AA}\),如果 \(c_{\sf AA}=\tt A\),那么只能生成这一种序列,否则,可以生成 \(\tt B\) 不相邻的所有序列 .
其次,如果 \(c_{\sf BA}=\tt B\),那么可以生成所有序列共 \(2^{n-3}\) 个,否则就只能生成 \(\tt B\) 不相邻的所有序列了,方案数可以由 Fibonacci 数列经典表出,即此时的答案为 \(f_{n-1}\) .
从而,我们得到了一个 \(O(n)\) 的算法,可以通过 .
ARC109D く
与 L 相比,我觉得还是く更好一点啊!
别分类讨论了,考虑每个直角三角形的重心,那么就除了如图灰线的交点不能越过之外别的八连通位置都能走:
那么一般走切比雪夫距离就行,特判一下一定会经过交点的情况给答案加一就好了,讨论量小很多 . 时间复杂度 \(\Theta(T)\) .
ARC110D Binomial Coefficient is Fun
首先令 \(d_i=b_i-a_i\),\(m\) 是原来的 \(m-\sum a\),那么可以得到答案的表达:
这里的组合数按照定义暴力算,不算求逆元时间复杂度 \(\Theta(n\sum a)\),可以通过 .
但是感觉不如组合意义,首先还是用 \(d,m\) 的转换不变,那么考虑组合数 \(\binom{n+m}m\) 可以描述为 \(n\) 个小球插入 \(m\) 个小球的方案数,则给排成一排的 \(n\) 个小球中 \(a_i\) 个小球前后都加上挡板,于是分别考虑每个挡板,就是总共插 \(m\) 个求方案数 . 那么就不难得到前面代数推导得到的式子了 .
ARC110F Esoswap
Hello, magic problem.
首先你在一个地方不断操作肯定是会变成 0 的,进而,如果你在 0 的前面一位不断操作,它也会变成 0,所以,显然可以得到它变成 0 前的最后一步是 1 .
那么不断对这个 0 前面操作,序列就变成了 0 1
. 类似地,可以观察到,对这个 0 前面再如此操作,序列会变成 0 1 2
,不断操作的过程中,序列总是递增的 .
从而可以得到一个构造方案:从最后一位开始,不断操作,这样肯定可以得到递增序列 . 操作次数 \(n^2\),可以通过 .
(神仙做法)
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17506581.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ