2025.10.5 NOIP 模拟赛 题解
T1 P130030 世界杯
题意
给定 \(A_{1\sim m}\) 和 \(B_{1\sim m}\),\(q\) 次询问,每次给定 \(a=A_{l\sim r}\) 和 \(b=B_{L\sim R}\)(\(r-l=R-L\),\(a_{1\sim n},b_{1\sim n}\)),求出最小的 \(s\) 使得 \(a_0\gets s-\sum a_{1\sim n},b_0\gets s-\sum b_{1\sim n}\) 后,\(\forall 0\le i\le n,a_i\ge 0,b_i\ge 0,a_i\ge \sum_{j\ne i}b_j,b_i\ge \sum_{j\ne i}a_j\),\(m,q\le2\times10^5,a_i,b_i\le10^9\)
分析
令 \(c_i=a_i+b_i\),显然答案为 \(\max(\sum a_{1\sim n},\sum b_{1\sim n},\max_{i=1}^n c_i)\)(实际这一步隐含了 \(\text{hall}\) 定理,但根据直觉答案应当是这样的)
定理:\(\max(\sum a_{1\sim n},\sum b_{1\sim n},\max_{i=1}^n c_i)=\max(\sum a_{1\sim n},\sum b_{1\sim n},c_{\argmax a},c_{\argmax b})\)
证明:
- 显然 \(LHS\ge RHS\),假如存在 \(x\) 使得 \(c_x>\max(\sum a_{1\sim n},\sum b_{1\sim n})\),即 \(a_x+b_x>\sum a,a_x+b_x>\sum b\)
- 若 \(a_x\ge b_x\),则 \(a_x>\frac{\sum a}2\),\(a_x\) 必然为 \(\max a\)
- \(a_x<b_x\) 时同理得 \(b_x=\max b\)
- 从而 \(\max(\sum a_{1\sim n},\sum b_{1\sim n},\max_{i=1}^n c_i)=\max(\sum a_{1\sim n},\sum b_{1\sim n},c_{\argmax a},c_{\argmax b})\)
容易前缀和与 \(\text{ST}\) 表维护,时间复杂度 \(O(n\log n+q)\)
T2 P130031 求和
题意
给定 \(n,k\),\(q\) 组 \((x,r)\) 分别求出 \(\sum_{i=0}^n[i\bmod k=r]\binom ix\),\(n,k,q\le10^5,x\le n,0\le r<k\le n\)
分析
当 \(k\) 较大时,容易暴力做到 \(O(\frac{nq}k)\)
考虑 \(k\) 较小时怎么处理
先令 \(n\) 向上对齐到 \(k\) 的倍数(这一操作对答案的影响容易 \(O(qk)\) 或 \(O(q)\) 处理,具体处理方式是容易的)
令 \(g_{x,r}=\sum_{i=0}^{n-1}[i\bmod k=r]\binom ix\),显然 \(g_{0,r}=\frac nk\),\(g_{x,r}=g_{x-1,r-1}+g_{x,r-1}\)
并有 \(\sum_{r=0}^{k-1} g_{x,r}=\sum_{i=0}^{n-1}\binom ix=\binom n{x+1}\)
由此容易由 \(g_{x-1,\ast}\) 推出 \(g_{x,\ast}\)
时间复杂度 \(O(nk+q)\)
总时间复杂度 \(O(\min(nk+q,\frac{nq}k))\),\(k>\sqrt q\) 时取前者,\(k\le \sqrt q\) 时取后者,则时间复杂度 \(O(n\sqrt q+q)\)
T3 P130032 距离
题意
给定 \(n\) 点有向完全图,\(q\) 次询问,每次给定 \(p,s,t\),求出 \(s\) 到 \(t\) 不经过 \(p\) 的最短路,\(n\le300,q\le5\times10^5\),\(3\text s\)
分析
分治,设当前处理到区间 \([l,r]\),传入一个矩阵,表示 \(l\sim r\) 中点还没有加入时的全源最短路
设两个子区间为 \([l,M]\) 和 \((M,r]\),则要将 \(l\sim M\) 加入 \((M,r]\) 的区间中,将 \(M+1\sim r\) 加入 \([l,M]\) 的区间中
对于 \(d_{1\sim n,1\sim n}\)(\(d_{i,j}\) 表示 \(i\) 到 \(j\) 的最短路,\(i\) 和 \(j\) 之一没有加入时值为 \(+\infty\)),加入 \(x\) 时,先两次 \(\text{dijkstra}\) 求出所有点到 \(x\) 的距离和 \(x\) 到所有点的距离,然后用 \(\text{Floyed}\) 的方式跟新即可
时间复杂度 \(O(n^3\log n+q)\),空间复杂度 \(O(n^3)\)
若将询问挂到分治的叶子上,然后在分治的同时处理,则时间复杂度不变,空间复杂度 \(O(q+n^2\log n)\)
T4 P130033 BST \(\quad\) gym102798K
题意
给定排列 \(a_{1\sim n}\) 和区间 \([l,r]\),可以任意重排 \(a[l:r]\),求出用 \(a\) 建立的 \(\text{BST}\)(即将 \(a_{1\sim n}\) 依次插入 \(\text{BST}\) 中)中结点深度和(根深度为 \(1\))的最小值,\(n\le10^5,r-l+1\le5000\)
分析
显然 \(a_{1\sim l-1}\) 是固定的,将 \(a_{l\sim n}\) 插入 \(a_{l\sim l-1}\) 建立的 \(\text{BST}\) 中后,形成 \(l\) 个可空段,显然各段之间独立,分别考虑
同理 \(a_{r+1\sim n}\) 被 \(a_{1\sim r}\) 划分为独立的段,每段内形态固定
因此先用 \(a_{1\sim n}\) 建立 \(\text{BST}\),求出其中 \(a_{1\sim l-1}\) 和 \(a_{r+1\sim n}\) 的深度和,然后用 \(dp\) 求出 \(a_{l\sim r}\) 重排带来的增量的最小值
分别考虑每段,设段内 \(a_{l\sim r}\) 的部分位置分别为 \(b_{1\sim m}\)(令 \(b_0,b_{m+1}\) 分别为段前一个与后一个 \(a_{1\sim l-1}\) 的值的位置),令 \(dp_{l,r}\) 表示 \(b[l:r]\) 作为一个子树的最小增量,则 \(dp_{i,i}=b_{i+1}-b_{i-1}-1\),转移为
使用决策单调性优化可做到 \(O(n\log n+(r-l+1)^2)\) 或 \(O(n+(r-l+1)^2)\)
比赛结果
\(10+30+60+5\),\(\text{rk}51\)

浙公网安备 33010602011771号