2025.6.17 NOI 模拟赛

比赛

T1 NFLS #18438. 如何区分猫和猫头鹰

题意

给定一棵树,一个整数 \(k\)\(a_{1\sim m},r_{1\sim m},c_{1\sim m}\),求出 \(\min_u \sum_{i=1}^m c_i\left\lceil\frac {\max(\text{dis}(u,a_i)-r_i,0)}{k}\right\rceil\)\(n,m,k\le2\times10^5\)

分析

\((a,r,c)\) 挂在点 \(a\) 上,对于点 \(u\) 上的 \((r,c)\) 的集合记为 \(S_u\)

点分治,容易转化为给定树上一个连通块 \(B\)\(\forall u\in B\),求出 \(\sum_{v\in B}\sum_{(r,c)\in S_v} c\left\lceil\frac{\max(d_u+d_v-r,0)}k\right\rceil\),其中 \(d\) 为到分治中心的距离

考虑每个 \((r,c)\) 的贡献,对 \(d\) 相同的 \(u\) 贡献相同,因此开长度为最大 深度的数组记录每个深度的总贡献,则一个 \((r,c)\) 相当于给定 \(p,v\),令 \([p,p+k)\) 加上 \(v\),令 \([p+k,p+2k)\) 加上 \(v+1\),以此类推,容易前缀和实现

总时间复杂度 \(O((n+m)\log n)\)

代码

T2 NFLS #18439. 如何区分洛天依和初音未来

题意

\(n\) 种卡牌,第 \(i\) 种有 \(a_i\) 张,要取出 \(b_i\) 张,每次抽取都会从剩余牌中等概率随机选择一个,若这种已经达到上限则放回,否则保留,求达到目标的期望操作次数,\(n\le50,\sum a_i\le2000\)

分析

转化题意:有 \(C,D\) 两个集合,初始为空,每次从剩余牌中取出一张,若 \(C\) 中这种牌已经达到要求,则放入 \(D\),否则放入 \(C\),这样一次操作贡献为 \(\frac{m-|C|}{m-|C|-|D|}\)(操作前的 \(|C|\)\(|D|\)

转化为对于每个 \((C,D)\) 求出贡献乘概率的总和

\(f_{i,j,k}\) 表示前 \(i\) 种牌有 \(j\) 张放入 \(C\)\(k\) 张放入 \(D\) 的方案数,则答案为

\[\sum_{0\le j,k\le m}\frac{f_{i,j,k}}{\binom m{j+k}} \frac{m-j}{m-j-k} \]

\(f\) 的转移为

\[f_{0,0,0}\gets 1\\ f_{i,j+\min(x,b_i),k+\max(0,x-b_i)}\gets f_{i-1,j,k}\binom{a_i}x \]

时间复杂度 \(O(m^3)\),经过一定程度的优化可以过

代码

\(\text{NTT}\) 优化之可以做到 \(O(m^2\log m)\)

存在 \(O(m\log^2 m)\) 的做法

参考

T3 NFLS #18440. 如何区分台湾和中华民国

比赛结果

\(35+25+21\)\(\text{rk}43\)

posted @ 2025-06-20 07:58  Hstry  阅读(7)  评论(0)    收藏  举报