目录

A. 一只羊的新年愿景

  • 题目类型: 签到题 / 坑点检查
  • 一句话题意: 定义完全加法函数 f(mn)=f(m)+f(n)f(mn)=f(m)+f(n)f(p)=pf(p)=p。求区间 [1,n][1,n] 内第 kk 小的满足 f(x)=xf(x)=x 的整数。
  • 解题思路:
    • 数学推导可得解集为:{所有素数}{4}\{\text{所有素数}\} \cup \{4\}
    • 预处理素数筛,注意特判 44 的位置(在 2,3,4,5,2,3,4,5,\dots 中排第 33)。

B. 黑大帅的灯会

  • 题目类型: 数据结构模型转化 / 计数
  • 一句话题意: 给定传递规则 ii+lowbit(i)i \rightarrow i + \operatorname{lowbit}(i) 及部分汇聚值,求满足总和限制的初始序列方案数。
  • 解题思路:
    • 识别出树形结构(Fenwick Tree 的反向)。
    • 利用差分关系:$S_u - \sum S_{v_{\text{obs}}} = a_u + \sum a_{\text{unseen}}$。
    • 转化为插板法问题:(n+m1m1)\binom{n+m-1}{m-1}

C. 皮老师的烟火

  • 题目类型: 图论 / 经典贪心优化
  • 一句话题意: 通过区间“后缀加减”操作达成目标数组,优化最大操作值与操作和。
  • 解题思路:
    • 差分转移 DLDR+1D_L \rightarrow D_{R+1},转化为基环树流量平衡。
    • 树部分拓扑消除,环部分优化:
      • minmaxx+ci\min \max |x + c_i|(极差中心)
      • minx+ci\min \sum |x + c_i|(中位数)

D. 云小安的系统

  • 题目类型: 交互题 / 树分治
  • 一句话题意: 在树上定位未知两点 s,ts,t,询问返回无序的“下一步方向”。
  • 解题思路:
    • 点分治(重心分解)定位。
    • 核心难点:利用已知端点的理论方向,反推另一端点的真实方向,消除无序性。

E. 拾柒的元旦封条

  • 题目类型: 复杂数据结构 / 势能分析
  • 一句话题意: 自定义 BB 进制合并规则,区间覆盖后查询历史版本区间和。
  • 解题思路:
    • ODT 维护区间颜色(势能分析保证复杂度)。
    • 整体二分处理询问,配合 BIT(需 __int128)维护前缀和。

F. 噜噜的跨年信号

  • 题目类型: 数位 DP / 状态压缩 / 构造计数
  • 一句话题意: 构造长度为 NN 的序列 AA,元素取自 {1,0,1}\{-1, 0, 1\},满足非零元素符号交替,且总能量 ai2i[L,R]\sum a_i 2^i \in [L, R]
  • 解题思路:
    • 状态设计: 类似于 Signed-Digit 系统的数位 DP。
    • 关键在于维护“当前前缀值”与“目标边界前缀”的差值状态。由于级数收敛,差值范围极小(±2\approx \pm 2),可状态压缩。
    • dp(bit, last_sign, diff_L, diff_R),处理上下界及非零交替约束。

G. 九老师的新年相位

给定一个 N×MN \times M 的圆柱面网格图(行方向 1N1 \sim N 循环首尾相接),边分为横向边与纵向边,每条边具有权值 WW 与相位 P{0,1}P \in \{0,1\}

定义 SS 为第 11 列点集,TT 为第 MM 列点集。

求一个将 SSTT 分隔开的割集 (VS,VT)(V_S, V_T),使得割集中满足 Pe=1P_e=1 的边数恰好为奇数,并最小化割集边权之和。

数据范围:3N,M1203 \le N, M \le 1201W1091 \le W \le 10^9

分析

本题为典型的平面图(圆柱面)最小割问题,可转化为对偶图上的最短路问题。

原图的 STS-T 割对应对偶图上绕圆柱一周的环。我们将圆柱面沿行 NN 与行 11 之间剪开,展开为 NN 层的平面图,并在垂直方向上复制一层以处理循环边界,形成层 00 到层 NN 的分层图。

定义对偶图节点状态 (r,c,p)(r, c, p)

  • r[0,N]r \in [0, N]:表示当前所在的行层级,00 为起始剪切线,NN 为绕行一周后的终点剪切线。
  • c[0,M2]c \in [0, M-2]:表示所在的列间隙(即原图第 c+1c+1 列与第 c+2c+2 列之间)。
  • p{0,1}p \in \{0, 1\}:表示当前路径累积的相位奇偶性。

边权转化:

  • 原图横向边 (i,j)(i,j+1)(i, j) \leftrightarrow (i, j+1) 对应对偶图在层间的垂直移动 rr±1r \leftrightarrow r \pm 1
  • 原图纵向边 (i,j)(i+1,j)(i, j) \leftrightarrow (i+1, j) 对应对偶图在同一层内的水平移动 cc±1c \leftrightarrow c \pm 1

算法流程:

由于割集环必须闭合,即起点 (0,k)(0, k) 和终点 (N,k)(N, k) 必须对应物理上的同一位置,我们需要枚举起始列间隙 k[0,M2]k \in [0, M-2]

对于每个 kk,运行 Dijkstra 计算从 (0,k,0)(0, k, 0)(N,k,1)(N, k, 1) 的最短路。

最终答案为所有 kk 对应的最短路长度的最小值。

0 条评论

目前还没有评论...