2026.2.9 NOIWC

\(8:00\) 开始,先开 \(\text T1\),大约 \(8:30\)\(44\text{pts}\)(枚举 \(x,y\) 同时变为的数字,显然不超过 \(2\max(x,y)\),单向变换距离容易预处理),\(9\) 点多会了单 \(\log\),大约 \(9:30\) 会了 \(O(1)\) 但被卡常,\(\text{selfeval}\) \(96\text{pts}\),过的最大点跑了 \(1.8s\) 还算安全

接下来在 \(\text T2\)\(\text T3\) 之间徘徊,写了 \(\text T2\)\(8\text{pts}\) 但挂了,大约 \(10\) 点多会了 \(\text T3\) 的一个 \(O(n)\) 构造(按第二棵树的 \(\text{dfs}\) 序依次调整第一棵树的结点),想了一下优化到 \(n-O(1)\) 次,得到 \(44\text{pts}\)

之后约 \(11:30\) 过了 \(\text T2\)\(8\text{pts}\)

最后 \(1.5\text h\) 中尝试 \(\text T1\) 卡常但无明显效果,写 \(\text T2\) 的下一个 \(16\text{pts}\) 来不及,尝试前 \(8\text{pts}\) 写完来不及调了

最终 \(96+8+44\),银牌

T1 二进制

给定 \(x,y\),每次选择 \(x,y\) 之一 \(\times 2\)\(+1\),求使得两者相同的最小操作次数,\(T\le 5\times10^7\)\(V\le10^{18}\)

假定 \(\text{popcount}\) 操作时间复杂度为 \(O(\log\log V)\)

显然 \(y\) 不会进行 \(\times 2\) 操作,令 \(t\) 为满足 \(2^tx\le y\) 的最大值

显然对 \(x\) 进行 \(t\)\(t+1\)\(\times 2\) 操作

后者的最小操作次数为 \(t+2x-y+1\),前者的最小操作次数为

\[\min_{i\ge 0}\left(i+\left\lfloor\frac{k+i}{2^t}\right\rfloor+\text{popcount}((k+i)\bmod 2^t)\right) \]

显然 \(i\le O(\log V)\),直接做为 \(O(T\log V\log\log V)\)

显然最优情况下,要么 \(k+i\) 的低 \(O(\log \log V)\) 位都是 \(0\),要么不会产生 \(O(\log \log V)\) 部分向前的进位,前者可以 \(O(1)\) 计算,后者可以预处理

时间复杂度 \(O(\log V\log\log V+T\log\log V)\)

代码

容易做到 \(O(\sqrt[O(1)]{V}+\log V\log\log V+T)\)

参考

T2 猫和老鼠

数轴 \([0,m]\) 上有点 \(A\),初始位置任意,可以任意移动但任意时刻速度不超过 \(1/s\)\(n\) 个质点,第 \(i\) 个可以以 \(w_i\) 的代价部署,若部署则第 \(t_i\) 秒出现于 \(a_i\),以 \(1/s\) 的速度向 \(b_i\) 移动,到达后消失,\(A\) 初始血量为 \(k\),对于 \(A\) 的一种移动方式,若任意时刻和任意质点重合则血量减 \(1\),血量 \(\le 0\) 则失败,求使得 \(A\) 无论如何操作都失败的最小代价,\(\sum n\le3\times10^5,k\le 10\)

先旋转坐标系,\((x,y)\to (x-y,x+y)\)

\(A\) 起点为 \((-p,p)\mid 0\le p\le m\),要求全程在 \(y=x\)\(y=x+2m\) 之间,移动时 \(\Delta x\ge 0,\Delta y\ge 0\),每个质点的路径对应一条水平或竖直线段

考虑一条从 \(y=x\)\(y=x+2m\) 的分界线,分界线上第一条线段和 \(y=x\) 相交,最后一条与 \(y=x+2m\) 相交,点 \(A\) 无法从相邻两条之间穿过,显然这样一条分界线可以让血量减一,若选出 \(k\) 条不交的分界线,则可以满足条件

对于两条线段,设前者的终点为 \(u\),后者的起点为 \(v\),若 \(u_x\le v_x\land u_y\ge v_y\) 则后者可以作为前者的后继

考虑网络流,每条的线段拆入点和出点,两者之间连边容量为 \(\infty\),费用为线段的费用

\(y=x\) 相交的连接源点,与 \(y=x+2m\) 相交的连接汇点

若一条线段可以作为另一条的后继,则后者出点向前者入点连边,费用为 \(0\) 容量为 \(+\infty\)

答案为流量 \(\le k\) 时的最小费用流

这样点数 \(O(n)\),边数 \(O(n^2)\),无法承受

\(\text{CDQ}\) 优化建图做到点数和边数都是 \(O(n\log n)\),然后使用原始对偶优化的基于 \(\text{EK}\) 算法的 \(\text{SSP}\),时间复杂度 \(O((n\log n)^2+kn\log n\times \log(n\log n))\)

由于费用都 \(\ge 0\),因此可以忽略初始的 \(\text{SPFA}\),势能初始化为 \(0\)

总时间复杂度 \(O(kn\log^2 n)\)

代码

参考

T3 画树

\(d_1(u),d_2(u)\) 分别表示两棵树上的度数

显然一对铅笔橡皮至多改变两个 \(d_1(u)\not\equiv d_2(u)\pmod 2\) 的点,因此答案的一个下界为 \(\frac{\sum_{u=1}^n [d_1(u)\not\equiv d_2(u)\pmod 2]}2\)(显然为整数),特别地当 \(T_1\ne T_2\)\(\sum_{u=1}^n [d_1(u)\not\equiv d_2(u)\pmod 2]=0\) 时下界为 \(1\),以下考虑构造证明可以取到下界

显然操作可逆,考虑从 \(T_2\) 开始操作,初始铅笔橡皮位置任意(同一对可以不在同一位置),要求最终每一对都到同一位置,输出方案时逆序即可

考虑以下两个基本操作:

  1. 一组铅笔橡皮在同一位置,两者可以一同移动且不影响树的形态

  2. 定义操作 \(\text{combine}(t,p_t,e_t)\) 表示将编号为 \(t\) 目前分别位于 \((p_t,e_t)\) 的一组铅笔橡皮移动到任意同一个结点

    考虑添加 \((p_t,e_t)\) 后得到一棵基环树,\(p_t,e_t\) 都在环上,存在一条边不在环上,设这条边为 \((u,v)\),其中 \(u\) 在环上,可以令 \(p_t\)\(e_t\) 都向 \(e_t\) 的方向移动,直到 \(e_t\) 位于 \(u\),此时 \(e_t\)\(v\) 移动,\(p_t\) 也向 \(v\) 移动,显然操作后仍然为树且两者重合

    若不存在树的部分,即原图是一条链且 \(p_t,e_t\) 分别位于两端,则此次 \(\text{combine}\) 失败

分为两步,先匹配奇偶性,然后处理结构的问题

匹配奇偶性,先取出所有奇偶不匹配的点 \(a_{1\sim k}\),显然 \(k\) 为偶数,两两分为 \(\frac k2\) 组,分别设为 \(p,e\),然后执行 \(\text{combine}\),若失败则说明此时 \(T_2\) 是一条链,显然之后还有其他的组需要处理,将当前组和后一组交换即可

特别地,若不存在奇偶不匹配的点,则额外取 \(e_1=p_1=1\)

调整结构,只需要一组 \(p,e\),取第一组即可,此时两者已经在同一点上

考虑 \(T_1\) 的一个叶子 \(x\),显然在 \(T_2\) 中度数一定为奇数,若其度数 \(\ge 3\),任取三个二邻居 \(a,b,c\),将 \(p,e\) 移到 \(a\),然后 \(e\to x,p\to c\)\(e\to b,p\to b\),即可让 \(a,b\)\(x\) 断开,重复以上过程可以让 \(T_2\)\(x\) 的度数变为 \(1\)

然后设 \(T_2\)\(x\) 的邻居为 \(c\),在 \(T_1\) 中父亲为 \(y\),先将 \(p,e\) 移到 \(x\),然后 \(p\to y,e\to c\),然后 \(\text{combine}(1,p,e)\) 即可,此时必然成功

删去 \(x\),对剩余部分递归即可

时间复杂度应当为指数级别,操作次数为 \(O(n^2)\),由于数据随机两者远远卡不满

代码

参考

posted @ 2026-02-26 12:49  Hstry  阅读(0)  评论(0)    收藏  举报