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\),转移为

\[dp_{l,r}=b_{r+1}-b_{l-1}-1+\min_{l\le k\le r} (dp_{l,k-1}+dp_{k+1,r}) \]

使用决策单调性优化可做到 \(O(n\log n+(r-l+1)^2)\)\(O(n+(r-l+1)^2)\)

代码

比赛结果

\(10+30+60+5\)\(\text{rk}51\)

posted @ 2025-10-09 10:23  Hstry  阅读(6)  评论(0)    收藏  举报