2026.8.14 模拟赛

https://oj.gxyzh.com/d/hzoj/contest/6a6aa51aee9cc46434e97746

T1 T2 T3 T4
实际得分 100 25 65 50
期望得分 100 65 80 50
能力得分 100 70~100 100 65~100

这一场由于鏖战 T2 2h+,未果,因此心态有些爆炸,导致 T3 十分显然的优化没有 丁真 到.

长春花

诈骗题,注意到答案不超过 \(31\),因此暴力即可.

紫罗兰

算法一

场上一直在考虑使用 DFS,因为 DFS 树上只有返祖边,一般来说更好统计.

但事实上 BFS 更简单,因为难以统计的是返祖边,而非横插边.

我们通过枚举从 \(i\) 开始进行 BFS,统计包含节点 \(i\) 的环的个数:
设当前节点为 \(x\),下一个节点为 \(u\),

  • 若 \(u\) 未遍历,则加入队列.
  • 否则,统计长度为 \(d_u+d_x+1\) 的环,由于最短路不止一条,因此需要统计最短路个数.

最终输出时,去除重复贡献.
时间复杂度为 \(O((n+m)n)\).

算法二

考虑使用动态加边 \((x,y)\):

  • 若 \(x\) 与 \(y\) 不联通,则没有贡献.
  • 否则统计 \(x\) 到 \(y\) 的最短路条数.

时间复杂度为 \(O((n+m)m)\).

天竺葵

带权最长上升子序列.

50 分的暴力 DP 是容易的:
设 \(dp_{i,j}\) 表示 \(a\) 下标为 \(i\),\(c\) 下标为 \(j\) 的末位的最小值.

则有:

\[dp_{i,j}=\min(dp_{i-1,j},a_i[if dp_{i-1,j-1}\times b_{j-1}< a_i]) \]

若 \(i\) 固定,则 \(dp_{i,j}\) 随 \(j\) 增加而增加,因此可以二分出 \(dp_{i-1,j-1}\times b_{j-1}<a_i\) 的位置 \(k\).
显然,只有 \(k\) 是需要更新的.

时间复杂度为 \(O(n\log n)\).

风信子

由于题目中给出 \(\sum k\) 的范围,因此每次询问时可以进行枚举较优的 \(k\) 个贡献.

考虑 \(k=1\) 的情况:
我们可以通过线段树维护:

  • 维护区间的 \(\max,\min,\operatorname{ans}\).
  • 那么 \(\operatorname{ans}_x=\max\{\operatorname{ans}_{ls},\operatorname{ans}_{rs},\max_{ls}-\min_{rs}\}\).

考虑 \(k>1\) 的情况:
考虑维护矩形的最大贡献:\(l\in [L_0,R_0]\),\(r\in [L_1,R_1]\).

有两种情况我们可以快速维护:

  • 两个区间重合,则为 \(k=1\) 的情况.
  • 两个区间不相交,则取左区间最大值,右区间最小值即可.

之后将矩形进行分裂,保证还是上面两种情况即可.

时间复杂度为 \(O(n\log n+\sum k\log k)\).

原题

  1. 暂无.
  2. Enigmatic Enumeration
  3. 暂无.
  4. 暂无.
posted @ 2026-08-14 18:08  Zhou_Lemon  阅读(17)  评论(0)    收藏  举报