做题记录 25.4.21
\(\textcolor{purple}\odot\) CF2068H Statues
令 \(d_0=|a|+|b|\)
若 \(d_0,d_1,\cdots,d_{n-1}\) 合法,则每次需要找到点 \((x_{n-1},y_{n-1})\),满足
\(|x_{n-1}-a|+|y_{n-1}-b|=d_{n-1}\) 且 \(|x_{n-1}|+|y_{n-1}|,d_1,\cdots,d_{n-2}\) 合法
因此 \(d_0\sim d_{n-1}\) 合法当且仅当 \(n=2\) 且 \(d_0=d_1\),或存在 \((x_{n-1},y_{n-1})\) 满足 \(|x_{n-1}-a|+|y_{n-1}-b|=d_{n-1}\) 且 \(|x_{n-1}|+|y_{n-1}|,d_1,\cdots,d_{n-2}\) 合法
\(d_0\sim d_{n-1}\) 合法的必要条件为 \(2\mid \sum d_i\) 且 \(2\max d_i\le \sum d_i\),实际上这是充分的
对于合法的 \(d_0\sim d_{n-1}\),方程组
的解 \((x_{n-1},y_{n-1})\) 一定满足 \(|x_{n-1}|+|y_{n-1}|,d_1,\cdots,d_{n-2}\) 合法(显然方程一定有解)
证明:
- 由于 \(\sum d_i\) 为偶数,因此 \(\min(d_0+d_{n-1},\sum d_i-d_0-d_{n-1})\equiv d_0+d_{n-1}\pmod 2\),\(|x_{n-1}|+|y_{n-1}|+\sum_{i=1}^{n-2} d_i\equiv |x_{n-1}|+|y_{n-1}|+\sum d_i-(d_0+d_{n-1})\equiv 0\pmod 2\),即 \(\sum d'_i\) 为偶数
- 然后考虑证明 \(2\max d'_i\le \sum d'_i\)
- 即 \(2\max(|x_{n-1}|+|y_{n-1}|,\{d_i\}_{i=1}^{n-2})\le |x_{n-1}|+|y_{n-1}|+\sum_{i=1}^{n-2}d_i\)
- 当 \(|x_{n-1}|+|y_{n-1}|\ge \max_{i=1}^{n-2}d_i\) 时,\(2\max(|x_{n-1}|+|y_{n-1}|,\{d_i\}_{i=1}^{n-2})=2(|x_{n-1}|+|y_{n-1}|)\),要证 \(2(|x_{n-1}|+|y_{n-1}|)\le |x_{n-1}|+|y_{n-1}|+\sum_{i=1}^{n-2}d_i\),即 \(|x_{n-1}|+|y_{n-1}|\le \sum_{i=1}^{n-2}d_i\),根据定义显然 \(|x_{n-1}|+|y_{n-1}|\le \sum d_i-d_0-d_{n-1}=\sum_{i=1}^{n-2}d_i\) 成立
- 当 \(|x_{n-1}|+|y_{n-1}|<\max_{i=1}^{n-2}d_i\) 时,要证 \(2\max_{i=1}^{n-2}d_i\le |x_{n-1}|+|y_{n-1}|+\sum_{i=1}^{n-2}d_i\)
- 由于 \(|x_{n-1}|+|y_{n-1}|<\max_{i=1}^{n-2}d_i\le \sum_{i=1}^{n-2}d_i=\sum d_i-d_0-d_{n-1}\),可得 \(|x_{n-1}|+|y_{n-1}|=d_0+d_{n-1}\)
- 因此要证 \(2\max_{i=1}^{n-2}d_i\le d_0+d_{n-1}+\sum_{i=1}^{n-2}d_i=\sum d_i\)
- 显然 \(2\max_{i=1}^{n-2}d_i\le 2\max d_i\le \sum d_i\) 成立
这一方程组通过枚举符号容易 \(O(1)\) 求解,因此可 \(O(n)\) 构造出一组合法解
\(\textcolor{purple}\odot\) CF2071E LeaFall
以下用 \(p_i\) 表示题面中的 \(\frac{p_i}{q_i}\),令 \(q_i=\frac{1-p_i}{p_i}\) 表示由 \(i\) 掉落到不掉落概率所需要乘以的系数
令 \(a_u=\prod_{v\in N(u)}p_v\) 表示 \(u\) 的所有邻居都掉落的概率
令 \(b_u=\prod_{v\in N(u)}a_uq_v\) 表示 \(u\) 的所有邻居中恰好有一个没有掉落的概率
令 \(d_u=(1-p_u)b_u\) 表示 \(b_u\) 的基础上 \(u\) 没有掉落的概率
考虑把点对 \((u,v)\) 拆为 \(\text{dis}(u,v)=1,\text{dis}(u,v)=2,\text{dis(u,v)>2}\) 三部分计算
\(\text{dis}(u,v)=1\) 等价于存在边 \((u,v)\),因此枚举每条边 \((u,v)\),其贡献为 \(u\) 和 \(v\) 都只有对方这一个邻居没有掉落的概率,为 \(a_ua_vq_uq_v\),这部分容易 \(O(1)\) 计算
\(\text{dis}(u,v)=2\) 等价于存在点 \(x\) 同时为 \(u\) 和 \(v\) 的邻居,枚举 \(x\),若 \(x\) 没掉落则 \((u,v)\) 的贡献为 \((1-p_u)\frac{a_u}{p_z}\times (1-p_v)\frac{a_v}{p_z}\),若 \(x\) 掉落则 \((u,v)\) 的贡献为 \((1-p_u)\frac{b_u-a_uq_x}{p_z}\times (1-p_v)\frac{b_v-a_vq_x}{p_z}\),因此一个 \(x\) 的总贡献为
两个求和都是 \(\sum_{u,v\in N(x),u<v}V_uV_v\) 的形式,除计算逆元外容易做到线性
\(\text{dis}(u,v)>2\) 的总贡献为
前两项容易做到 \(O(n)\),第三项使用 \(\text{dis}(u,v)=2\) 的方式可做到线性
总时间复杂度 \(O(\sum n\log V)\),若使用 \(O(n)\) 求任意 \(n\) 个数的逆元,则可做到 \(O(\sum(\log V+n))\) 或 \(O(\log V+\sum n)\)

浙公网安备 33010602011771号