近期总结2023.10.10
CF1874D Jellyfish and Miku
题意:有 \(n+1\) 个点,用 \(n\) 条边依次连接点 \(0...n\),边权分别为 \(a_{1...n}\)。一个人,初始在点 \(0\)。若他当前在点 \(0\),那么他会走向点 \(1\);若他当前在点 \(x(x>0)\),他有 \(\frac{a_x}{a_x+a_{x+1}}\) 的概率走向点 \(x-1\),他有 \(\frac{a_{x+1}}{a_x+a_{x+1}}\) 的概率走向点 \(n\)。你的任务是构造 \(a_{1...n}\) 满足 \(\sum a_i=m\),求这个人第一次走到点 \(n\) 的最小期望时间。
\(1\le n,m\le 3000\)。
设 \(c[i]\) 表示从 \(i\) 成功走到 \(i+1\) 的期望步数。
那么 \(c[0]=1,\space c[i]=1+\frac {a_i}{a_i+a_{i+1}} (c[i-1]+c[i])\)
推式子
从 \(0\) 到 \(n\) 的期望时间
我们只需要最小化 \(\sum\limits_{i=2}^n\frac{\sum_{j<i}a_j}{a_i}\) 即可。
设 \(f[i,j]\) 表示构造了 \(a_{1...i}\),并且 \(\sum_{p=1}^i a_p=j\),的答案。
枚举 \(a_{i+1}\) 的取值 \(k\),转移:\(f[i,j]+\frac jk\rightarrow f[i+1,j+k]\)。
这样做的时间是三次方级别。考虑到 \(a\) 是不降的,\(k\) 需满足 \(k\le \frac{m-j}{n-i}\),因此枚举 \(k\) 是调和级数的。
AGC001E BBQ Hard
题意:给出 \(n,a_{1...n},b_{1...n}\),求
\(1\le n\le n\times10^5,\space 1\le a_i,b_i\le 2000\)
一个重要的套路:考虑式子的组合意义。不难发现,\({a_i+a_j+b_i+b_j \choose a_i+a_j}\) 相当于平面上从 \((0,0)\) 走到 \((a_i+a_j,b_i+b_j)\) 的路径条数。
一个重要的套路:用基准计数。直接 \(\text{DP}\) 不好做,考虑到我们每次都是在同一个平面做同一种 \(\text{DP}\),不难发现,\((0,0)\rightarrow(a_i+a_j,b_i+b_j)\) 相当于 \((-a_i,-b_i)\rightarrow (a_j,b_j)\),这样以来,我们就有了基准——中心点为 \((0,0)\)。直接在这个平面上 \(\text{DP}\),以 \(j\) 结尾的点即为 \(f[a_j,b_j]\)。这的 trick 与 NOI2016 优秀的拆分 有异曲同工之妙。
时间复杂度 \(O(n+V^2)\)。
ARC165E Random Isolation
题意:一棵树,你每次随机选择一个现有的、所处连通块大小 \(>k\) 的点,然后把它和它连接的边删去,求期望删多少次之后无法操作。
\(1\le k<n\le 100\)
一个重要的套路:期望删的次数 \(=\) 所有可删点连通块的出现概率之和
还有,随机一个排列,依次删点,求删成功的期望次数,这其实是类似的。
我们只需考虑所有可能的连通块的出现之和,因为这些连通块总能贡献 \(1\)。
考虑树形 \(\text{DP}\),设 \(f[u,i,j]\) 表示以 \(u\) 为根的子树,连通块大小为 \(i\),已经删了 \(j\) 个点的方案数。
我们只考虑这 \(i+j\) 个点的概率,对于一个大小为 \(x\) 的连通块、删了 \(y\) 个点,说明 \(y\) 个点在 \(x\) 个点之前删除,总排列数为 \(\frac {x!y!}{(x+y)!}\)。
时间复杂度 \(O(n^2k^2)\)。