【题单】wmr & wjr 第一次讲题

P14250 [集训队互测 2025] 携春同行

先问链,可以得到 \(\sum a_i\)
然后问所有 \(i\),以 \(i\) 为根的菊花的答案。
\(p\)\(a\) 从大到小排序后的结果。若 \(a_i\ge p_3\),则返回 \(p_1+p_2+p_3\)
否则返回 \(p_1+p_2+a_i\)
那么全部加起来可以得到 \(np_1+np_2+3p_3+\sum_{i\ge 4} p_i\)
减去 \(2(p_1+p_2+p_3)\)\(\sum_i p_i\),可以得到 \((n-3)(p_1+p_2)\),那么 \(p_1+p_2\) 就知道了,可以得到其他所有的 \(a_i\)

现在问题是,你不能通过离线查询区分 \(p_1,p_2,p_3\)。找出 \(p_1,p_2\),将他们填成 -1 就做完了。
考虑放一条链,中间挂一个点 \(u\),若返回 \((\sum_{i} a_i)-p_3\) 则说明 \(u=p_3\),反之则不是 \(p_3\)
对于多个同时 check 的也是同理,考虑每次二分就可以做到 \(2\log n\) 次在线猜测。

UOJ1095 【UNR #10】分披萨

先考虑 \(\forall i,a_i\ne 0\) 的情况。
观察:每段内颜色数 \(c\) 是固定的。否则,对于 \(c<c'\),前者要调整为后者每段右端点都要右移,故矛盾。
设第 \(i\) 个区间是 \([l_i,r_i]\),则 \(r_i\) 所有可能取值是一段区间。
发现左右端点划分是不相关的,考虑用 \([l_k\le n]-[r_k<n]\) 进行判定是否有解。
那么可以枚举 \(c\),对上述两个东西分别计数。

对于 \([l_k\le n]\) 的计数是简单的,左端点划分尽量靠左。也就是对于一个区间 \([l,r]\)\(a_r\) 是区间内第一次出现。那么需要计算:已经有 \(x\) 种颜色,还需要确定 \(y\) 个位置的颜色,他们取值在 \(1\sim m-1\) 中,最后颜色数是 \(c-1\)。可以 \(O(n^3)\) 预处理。这部分时间复杂度 \(O(kn^2)\)

对于 \([r_k<n]\),右端点划分尽量靠右,这要求 \(a_{r+1}\) 在当前区间中没有出现过。那么记录这一维,分类讨论进行转移。时间复杂度 \(O(kn^3)\)

注意到 \(c\le \frac{n}{k}\),故复杂度 \(O(n^4)\)

P6775 [NOI2020] 制作菜品

  • \(m=n-1\):每次找到最小和最大的组成一个菜品,然后递归。
    • 假设 \(a\) 从小到大排序了,那么 \(a_1<k,a_n\ge \frac{(n-1)k-a_1}{n-1}=k-\frac{a_1}{n-1}\ge k-a_1\)
  • \(m\ge n-1\):加入很多 0 个的材料,变成上述问题。
  • \(m=n-2\):将 \(m=n-1\) 中的关系进行连边,那么一定可以划分为若干连通块,其中包含一棵树,剩下的都是带一个环的连通块。
    那么可以使用 01 背包将 \(m=n-2\) 划分成两个 \(m=n-1\) 的子问题,时间复杂度 \(O(\frac{n^2k}{\omega})\)
posted @ 2026-07-17 16:18  TallBanana  阅读(14)  评论(0)    收藏  举报