2025.6.2 NOI 模拟赛 题解

比赛

T1 NFLS #P10356. 逆序对

题意

给定 \(n,k,p\)\(a_{1\sim n}\;(a_i\in[0,2^k))\),定义 \(f(x)\)\(b\mid b_i=a_i\oplus x\) 的逆序对数量(\(x\in[0,2^k)\)),求出 \(2^k\)\((f(i),i)\) 的第 \(p\) 小值,\(n\le5\times10^5,k\le30,p\in[1,2^k]\)

分析

定义 \(\text{lcp}(x,y)=\max 2^k \mid (x>>k)\ne (y>>k)\),若 \(x=y\) 则未定义,则对于 \((a_i,a_j)\),两者成为逆序对当且仅当 \(x\)\(\text{lcp}(a_i,a_j)\) 位上的值等于 \(a_j\)\(\text{lcp}(a_i,a_j)\) 位上的值

因此可以求出 \(v_{i,0/1}\) 表示 \(x\) 的第 \(i\) 位取 \(0/1\) 时的贡献,容易分治求出,时间复杂度 \(O(n\log n + nk)\)

\(bs=\sum_i \min(v_{i,0},v_{i,1})\),令 \(x_i=|v_{i,0}-v_{i,1}|\),则 \(f(s)\) 等于从 \(x\) 中选出子集 \(s\) 求和,加上 \(bs\) 的结果,令 \(f'(s)=f(s)-bs\),转化为求 \((f'(s),s)\)\(p\) 小值

先二分 \(f'(s)\),转化为求 \(\{x\}\) 有多少子集满足子集和不超过给定值,容易 \(\text{meet in the middle}\) 实现,时间复杂度 \(O(k2^{\frac k2}\log V)\)

然后二分 \(s\),处理方式相同,时间复杂度 \(O(k^22^{\frac k2})\)

总时间复杂度 \(O(n\log n + nk+k2^{\frac k2}\log V+k^22^{\frac k2})\)

代码

参考

T2 NFLS #P1276. N门问题

题意

\(n\) 个元素,初始等概率随机选择一个打上标记,甲知道被标记的元素编号,乙不知道,每次乙选择一个被打标记概率最大(乙认为的)的元素,甲删除一个没有打上标记且没有被选择的元素,乙根据加法的选择重计算每个位置被打标记的概率,乙认为甲的选择为等概率随机的,实际上甲可以主动选择每次删除的(无论是否主动,都必须满足删除的元素不是被乙选择的),\(n\le 2\) 时停止,甲要最小化乙最终选择的元素被打标记的概率,求最终概率,给定 \(t\)\((a,b)\),已知 \(n\)\(\forall i,n\equiv a_i\pmod{b_i}\) 的最小非负整数解,求最终概率,或判定不存在 \(n\)\(t\le5\times10^4,\text{lcm} b_i\le10^{18}\)

分析

\(\text{EXCRT}\) 求出 \(n\)

可证无论乙方选择哪个元素,甲删除一个元素后乙之前选择的元素被标记的概率都会变为唯一最小

可证 \(n\ge 11\) 时乙方必败,\(n\le 10\) 的情况可 \(dp\) 求出

时间复杂度 \(O(t\log V)\)

代码

T3 NFLS #P5206. 真正的运输

比赛结果

\(75+0+15\)\(\text{rk}42\)

posted @ 2025-06-04 20:49  Hstry  阅读(12)  评论(0)    收藏  举报