如此摆烂,也是可以的吗!

好多之前做过的题都不会了啊/lh。记一下。

[ABC238F] Two Exams

这里有两个都小于的限制,不太好做。考虑将其按照 \(p\) 从小到大排序来消掉一维限制。那么对于一个人,在他前面的人 \(p\) 必然已经比他小了,如果前面的选取方案中没有选的人存在 \(q\) 值比他小的,那他就不能选了。

所以设 \(f_{i,j,k}\) 表示前 \(i\) 个数,选了 \(j\) 个人,没选的人 \(q\) 的最小值为 \(k\) 方案数。注意可能都选,此时 \(k=n+1\)。那么 \(f_{0,0,n+1}=1\)

转移方程为 \(f_{i,j,k}[q_{i+1}<k][j\neq 0] \to f_{i+1,j+1,k},f_{i,j,k}\to f_{i+1,j,\min(q_{i+1},k)}\)

CF920E Connected Components?

考虑正常 dfs 求连通块,只要能快速找到能走的点,复杂度就是对的。首先可以用并查集维护下一个没走过的点,然后你只需要检查有没有这条边。用一个 set 存边即可。时间复杂度 \(\mathcal{O}(nlog n)\)

[ABC321G] Electric Circuit

转化就是:期望转为求所有方案的和,然后所有方案的连通块数之和转为每个连通块出现在了多少个方案中。

点集连边问题,可以考虑先让某个集合内部不和外部连边,所以我们先设一个 \(g_S\) 表示 \(S\) 内部独立连边的方案数。这样有着非常严格的限制,若所有在 \(S\) 中的点在 \(A\) 中出现的次数为 \(c_1\),在 \(B\) 中出现的次数为 \(c_2\),那么必须满足 \(c_1=c_2\),否则,总有一个点要匹配这个点集外部的点。如果出现次数相等那么方案数就是 \(c_1!\),因为怎么匹配都行。

然后设 \(f_S\) 表示 \(S\) 独立形成一个连通块的方案数。首先 \(g_S\) 是形成了若干个连通块的方案数,那么 \(f_S\) 可以通过容斥 \(g_S\) 得到。枚举 \(S\)编号最小的点所在的联通块,也就是枚举真子集 \(T\),然后 \(f_S\) 减去 \(f_T \times g_{S/T}\)。为什么必须是编号最小的呢?因为会算重,比如 \(\{1,2,3\}\),我先枚举了 \(\{1\}\),又枚举了 \(\{2,3\}\),这显然是一样的。实现考虑使用 \(\operatorname{lowbit}\)

答案就是 \(\sum_S f_S \times (m-c_1)!\),在有这个连通块的情况下,外面的边可以乱连,因为 \(f_S\) 的定义只考虑了 \(S\) 内部的边。

[ARC120C] Swaps 2

考虑先对题目中的操作做一个转化。我们交换 \(a_i,a_{i+1}\),相当于 \(a_i\) 的位置增大了 \(1\),再给它加 \(1\),就相当于值增大了 \(1\)\(a_{i+1}\) 则位置,数值都减小 \(1\),那么考虑构造 \(a'_i=a_i-i,b'_i=b_i-i\),那么最终要求是 \(a'=b'\),操作是交换 \(a'_i,a'_{i+1}\)

然后是一个常见 trick,考虑令 \(b'_i\)= 表示 \(b'_i\)\(a'\) 中出现的位置,然后求个逆序对就好了。还有这个题可能一个值会出现多次,那么应该是前面的和前面的配对最优。邻项交换易证。

操作从常见的简单操作做了延伸,考虑把它转化为易于处理的常见操作。

P8779 [蓝桥杯 2022 省 A] 推导部分和

考虑边带权并查集。每个点的点权是它与父亲的边的边权,因为并查集中的边是时刻变化的。每次合并的时候,只有合并的那个集合的根的边权会发生变化,据此更新即可。

[ABC225F] String Cards

考虑直接按照字典序排序为什么不对,对于以下两组数据:

3 2 | 3 2
bba | baa
bb  | ba
bba | b

我们会优先把字典序最小的串放在前面,但是串的长度并不相同,这样对于一个串是另一个串前缀的情况我们就会把前缀放到前面,但这不一定是优的。同时,如果所有的串长度相同,那么这个排法则是完全正确的。

假设我们确定了选那些串,我们会怎么排?这个有经典排法:\(x+y<y+x\)。可以证明,这样比较等价于 \(x^{+\infty}<y ^{+\infty}\),证明可以从进制数的角度考虑。因此比较具有传递性,我们也可以按照此顺序排序后 dp。

\(f_{i,j}\) 表示选了 \(i \sim n\) 的字符串 \(j\) 个最小字典序的结果。这么设状态的原因和开始是一样的,为了防止出现后面长度不确定导致比较错误的情况。当然,你也可以加一维长度,那么正反就随你心意。

CF1753C.Wish I Knew How to Sort

最终形态是前 \(cnt_0\)\(0\)\(cnt_1\)\(1\),在此之前,假设前 \(cnt_0\) 个数中有 \(x\)\(1\),那么能将 \(x-1\)\(i,j\) 就是在 \(0\) 段和 \(1\) 段各选一个,方案数 \(x^2\),概率 \(\frac{x^2}{\binom{2}{n}}\),因此期望 \(\frac{1}{p}\) 次将 \(x-1\),加起来就行了。

posted @ 2024-09-29 15:09  aCssen  阅读(27)  评论(1)    收藏  举报