2025.4.11 NOI 模拟赛 题解
T1 NFLS #P5155. 改良型三叶虫
题意
在 \(n\times m\) 的网格中,每个格子内可能有一个生物,生物有朝向 \(\text{L/R/U/D}\),\((x,y)\) 处朝向 \(\text U\) 的生物可以看到格子 \((u,v)\mid x-u>|y-v|\),每个生物都可以左转 \(90^\circ\) 或右转 \(90^\circ\) 至多一次,要使任意一对生物都无法互相看到,求最少旋转数量,并构造具体方案
分析
假设已经确定需要旋转的生物的子集,则可以确定每个生物是 \(\text{L/R}\) 还是 \(\text{U/D}\)
显然 \(\text{L/R}\) 和 \(\text{U/D}\) 之间互相无法看到,因此分开考虑两部分,两部分类似,只考虑方向确定为 \(\text{L/R}\) 的部分
其中一部分确定为 \(\text{L}\) 或确定为 \(\text{R}\),假设这一部分中不存在互相看到的情况,则对于没有确定 \(\text{L}\) 或 \(\text{R}\) 的位置,若这个位置可以被 \(\text{L}\) 看到则取 \(\text{L}\),否则取 \(\text{R}\),容易发现这样构造一定合法
综上,在选定旋转的部分的情况下,若固定的部分合法,则存在一种构造方案使得全局合法
由于选择的部分要最小,因此问题转化为求出固定部分最大数量并给出一种方案
同样 \(\text{L/R}\) 和 \(\text{U/D}\) 可分开考虑,只考虑 \(\text{L/R}\) 部分
相当于从所有 \(\text{L/R}\) 中选出一个最大的子集,使得子集内两两不可互相看到
发现可以转化为存在 \(s_{1\sim n}\),满足 \(s_i\in[1,m]\cap\mathbb Z\),且 \(|s_i-s_{i-1}|\le 1\),保留 \(y\le s_x\) 的 \((x,y):\text{L}\) 和 \(y\ge s_x\) 的 \((x,y):\text{R}\)
对这条分界线 \(dp\) 即可
时间复杂度 \(O(nm)\)
T2 NFLS #18086. 吃饭★喝水
T3 NFLS #P12808. 余晖烁烁
题意
给定 \(a_{1\sim n}\),求出一种策略,使得生成 \(i\) 的概率为 \(\frac{a_i}m\),其中 \(m=\sum a_i\),一个策略可表示为一棵二叉树(结点数可无穷大),不存在一个儿子的结点,每个叶子有 \([1,n]\) 内的值,到根的距离为 \(d\) 的叶子有权重 \(2^{-d}\),这棵数生成 \(i\) 的概率为所有值为 \(i\) 的叶子的权重之和,这棵树的权值为所有叶子的值的带权和,求合法策略中的最小权值,\(n\le10^6,m\le10^7\)
分析
假设一个 \(i\) 拆为 \(t\) 个叶子,到根的距离分别为 \(d_{1\sim t}\)
若 \(d\) 中存在两个相同的,则把两者合并后提到上一层权值一定更小
因此 \(d_{1\sim t}\) 两两不同,即 \(\sum 2^{-d_i}=\frac{a_i}m\)
令 \(E(p)=[\sum 2^{-d_i}=\frac pm]\sum 2^{-d_i}d_i\),则答案为 \(\sum E(a_i)\)
考虑如何求出 \(E(0\sim m-1)\)
发现转移为 \(E(p)=\frac 12 E(2p\bmod m)+\frac pm\)
若 \(p\) 向 \(2p\bmod m\) 连边则构成内向基环树森林(实际上森林中树的数量不超过 \(2\)),环上的 \(E\) 可解方程,树上的可递推
时间复杂度 \(O(n+m+\log V)\)
比赛结果
\(0+26+0\),\(\text{rk}40\)

浙公网安备 33010602011771号