【比赛题解】CSP2022 提高组题解

 


T1. 假期计划

Solution

首先,从每个节点开始 bfs 一次,求出任意两个点之间的最少转车次数。

由于路径的形式为 1ABCD1,考虑枚举路径当中的中转点 B,C,现在要找出满足条件且权值和最大的一对点 A,D

可以对每个点 x,维护权值前三大的点 gx,1,gx,2,gx,3,使得 1gx,igx,ix 之间的最少转车次数 k。至于为什么要维护前三大,是为了不和另外两个中转点重复。

找出满足条件且权值和最大的一对 A,D,只需枚举 i,j[1,3],分别尝试令 A=gB,i,D=gC,j 更新答案即可。

时间复杂度 O(n2+nm)

T2. 策略游戏

Solution

分类讨论(下面说的 最大值 / 最小值 指的是绝对值 最大 / 最小,0 可以同时归进正数和负数):

  • 若小 L 选择的 A 为正数:

    • 若小 Q 可以选择的 B 只有正数:小 L 会选择正数最大值,小 Q 会选择正数最小值。
    • 否则:小 L 会选择正数最小值,小 Q 会选择负数最大值。
  • 若小 L 选择的 A 为负数:

    • 若小 Q 可以选择的 B 只有负数:小 L 会选择负数最大值,小 Q 会选择负数最小值。
    • 否则:小 L 会选择负数最小值,小 Q 会选择正数最大值。

使用两棵线段树分别维护序列 A,B 的区间 正 / 负 最大值 / 最小值 即可。

T3. 星战

Solution

反攻时刻条件 1:从任意一个点开始,都可以走入一个环中。
反攻时刻条件 2:每个点的出度均为 1

显然条件 2 是条件 1 的充分条件。

设集合 S 表示当前时刻每条有向边的起点组成的可重集,则当前时刻为反攻时刻当且仅当 S={1,2,,n}

可以考虑 hash,维护集合 S 所有数的和、平方和。判断 S 的和是否为 n(n+1)2S 的平方和是否为 n(n+1)(2n+1)6

操作 1 与 操作 3,都是往集合 S 里 加 / 删 一个数,直接维护即可。

操作 2 与 操作 4,预处理出每个点的所有入边起点的和、平方和,把原先的贡献删掉,加进新的贡献即可。

时间复杂度 O(n)

T4. 数据传输

Solution

先讨论 k=3 的情况。

对于每个从 st 的询问,不妨以 t 为根,将从 st 的路径提取出来。设从 st 的路径上的第 i 个点为 seqi

st 的过程中,有四种走法:

  • 转移 1:向 t 的方向走 1 步。
  • 转移 2:向 t 的方向走 2 步。
  • 转移 3:向 t 的方向走 3 步。
  • 转移 4:向 t 的方向走 2 步,再向它的某个儿子走 1 步。

至于为什么不能从当前点向 t 的方向走 1 步,再向它的子树内走 2 步。这是因为使用这种转移后的下一步转移,被从当前点出发的所有下一步转移包含,而这种转移多走了一个点,显然是更劣的。

注意到在转移 4 中,向 t 的方向走 2 步,再向它的某个儿子走 1 步,则走向的这个儿子的权值要尽量小。故记录 greatu 表示 u 的点权最小的出点的权值,即 min(u,v)E{av}

fi,0/1/2 分别表示到从起点 s 出发,与 seqi 距离为 0/1/2 的点的代价和最小值,则:

fi,0=min(fi1,0+aseqi,fi1,1+aseqi,fi1,2+aseqi)fi,1=min(fi1,0,fi1,1+greatseqi)fi,2=min(fi1,1,fi1,2+greatseqi1)

注意到这个转移可以看成是(这里的矩阵乘法是 min,+ 广义矩阵乘法):

[fi,0fi,1fi,2]=[fi1,0fi1,1fi1,2]×[aseqi0aseqigreatseqi0aseqigreatseqi1]

考虑动态 dp。有两种写法:

  • 运用树上倍增自下而上地维护矩阵积。回答询问时,将 sLCA(s,t) 的链信息与 tLCA(s,t) 的链信息分别求出来,分类讨论合并信息。
  • 运用树上倍增自下而上、自上而下地维护矩阵积。回答询问时,将 sLCA(s,t) 的链信息与 LCA(s,t)t 的链信息分别求出来,合并信息。

至于 k=1,2 的情况就很简单了,这里留给读者。

时间复杂度 O(nk3logn)

posted @   Calculatelove  阅读(573)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示