做题记录 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}\),方程组

\[\begin{cases} |x_{n-1}|+|y_{n-1}|=\min(d_0+d_{n-1},\sum d_i-d_0-d_{n-1})\\ |x_{n-1}-a|+|y_{n-1}-b|=d_{n-1}\\ \end{cases} \]

的解 \((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)\) 构造出一组合法解

代码

参考 1

参考 2

\(\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\) 的总贡献为

\[(1-p_x)\sum_{u,v\in N(x), u<v}(1-p_u)\frac{a_u}{p_z}\times (1-p_v)\frac{a_v}{p_z}+p_x\sum_{u,v\in N(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} \]

两个求和都是 \(\sum_{u,v\in N(x),u<v}V_uV_v\) 的形式,除计算逆元外容易做到线性

\(\text{dis}(u,v)>2\) 的总贡献为

\[\begin{aligned} &\sum_{\text{dis}(u,v)>2}d_ud_v\\ =&\sum_{u,v}d_ud_v-\sum_{\text{dis}(u,v)=1}d_ud_v-\sum_{\text{dis}(u,v)=2}d_ud_v\\ =&\frac12\left(\left(\sum_i d_i\right)^2-\sum_i d_i^2\right)-\sum_{(u,v)\in E}d_ud_v-\sum_{x=1}^n \sum_{u,v\in N(x),u<v}d_ud_v\\ \end{aligned} \]

前两项容易做到 \(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)\)

代码

参考

posted @ 2025-04-22 07:48  Hstry  阅读(3)  评论(0)    收藏  举报