近期总结mon.12
CF708 Student's Camp
题意:有一个 \((n+2)\times m\) 的网格,行的编号分别为 \(0...n+1\)。一共有 \(k\) 天,在每一天,对于网格第 \(i\) 行(\(1\le i\le n\)),该行如果有格子,则两端的格子都有 \(p\) 个概率消失。求过了 \(k\) 天后网格仍然连通的方案数,对 \(10^9+7\) 取模。\(1\le n,m\le 1.5\times 10^3,\space 1\le k\le 10^5\)
一种朴素的 dp 为设 \(f[i,l,r]\) 表示前 \(i\) 行连通,且第 \(i\) 行恰好保留 \([j,k]\) 的格子的概率。
转移:\(f[i,l,r]=p^{l-1+m-r}\times (1-p)^{k-(l-1+m-r)} \times {k\choose l-1}\times{k\choose m-r}\sum_{x,y} f[i-1,x,y]\)
发现 \(l,r\) 两边的信息处理其实是非常类似的,考虑减少状态。
设 \(f[i,r]\) 表示前 \(i\) 行连通且第 \(i\) 行右端点为 \(r\) 的概率。
转移可以考虑容斥
右边括号里的意思是:在右端点 \(\ge r\) 的前提下,总方案数减去左端点 \(>r\) 的方案数。
设 \(g[i,j]=\sum_{x=1}^j f[i,x]\),则
把有关 \(r\) 的拆出来
前缀和优化即可,时间复杂度 \(O(nm)\)。
AGC023F 01 on Tree
题意:一棵有根树,每个点标有 \(0/1\) 。有一个空的序列,每次消去一个没有父亲的点,并将其对应的 \(0/1\) 加在序列末尾。求最终序列的逆序对数的最小值。
不难发现,选了 \(1\) 之后必然将他下面的所有 \(0\) 全选掉。考虑将所有的 \(0\) 与其祖先中距离最近的 \(1\) 合并,最终仍然形成一棵树。令新树中每个点的权值为其所包含的 \(0\) 的数量,不难发现,原问题等价于:每次选择一个没有父亲的点,设其为第 \(t\) 个选的点,其权值为 \(c\),则代价为 \(t\cdot c\)。求选完所有点的最小代价。
这是一个经典问题,普及一下。
从树上找出权值最大的点,不难发现选了他的父亲后必定直接选他。
考虑把该点与他的父亲合并,加下来思考合并后如何比较权值。
设合并前该点权值为 \(a\),父亲为 \(b\),合并后需要与 \(c\) 比较。
两种顺序
-
\(b+2a+3c\)
-
\(c+2b+3a\)
两者相减得 \(2c-(a+b)\),除以 \(2\) 得 \(c-\frac{a+b}{2}\),我们只需要比较 \(c\) 和 \(\frac{a+b}2\) 的大小即可。
进一步的,设我们需要比较的点分别由权值为 \(a_1,a_2,...,a_m\) 和 \(b_1,b_2,...,b_k\) 合并而来,则
-
\(a_1+2a_2+...+ma_m+(m+1)b_1+(m+2)b_2+...+(m+k)b_k\)
-
\(b_1+2b_2+...+kb_k+(k+1)a_1+(k+2)a_2+...+(m+k)a_m\)
相减得 \(m(b_1+b_2+...+b_k)-k(a_1+a_2+...+a_m)\)
除以 \(m\cdot k\) 得 \(\frac{b_1+b_2+...+b_k}k-\frac{a_1+a_2+...+a_m}m\)
于是只需要比较平均值即可。
至于如何计算答案,考虑对于每个点记录由多少个点合并而来,以及这些点的权值之和即可。
ARC105F Lights Out on Connected Graph
题意:一张 \(n\) 点 \(m\) 边的简单无向连通图,选一个边集,使得所有点连通且是二分图的方案数。
\(1\le n\le 17,\space n-1\le m\le \frac{n(n-1)}2\)
考虑分成两个二分图点集,然后选边使得所有点连通,同一个点集内不存在边,最后再除以 \(2\)。
设 \(g[S]\) 表示分成两个点集并选边的方案数,不要求连通。
设 \(f[S]\) 表示在 \(g[S]\) 的基础上连通的方案数。
求 \(g[S]\):枚举一个点集 \(T\),设 \(cnt_S\) 表示集合 \(S\) 内的方案数,则 \(g[S]=\sum_{T\in S} 2^{cnt_S-cnt_T-cnt_{S-T}}\)
求 \(f[S]\):容斥,用 \(g[S]\) 减去不联通的。枚举最小编号的点所属的连通块,则 \(f[S]=g[S]-\sum_{T\in S,\min_{x\in S}\{x\}\in T} g[T]f[S-T]\)
时间复杂度 \(O(3^n)\)。

浙公网安备 33010602011771号