Live2D

Solution Set - “也许我们早已经共鸣在那约定之地”

0.「AGC 024D」Isomorphism Freak

  设直径为 d, 则最小同构系大小显然是 d/2+1, 我们只需要求出满足这个大小的最少叶子数. 我们确定一个点或者一条边为中心, 向外 BFS, 同层结点的度数需要最终相同, 因此此时最少叶子树就是每层度数最大值的乘积. 这个中心点不一定和直径有关, 但… n 实在是太小了, 全部枚举一边就行, O(n2) 可过.

1.「APIO 2018」「洛谷 P4631」选圆圈 ⭐

  好像在 127 的论文里见过这个网格化的 trick?

  设当前最大半径为 R, L 为任意满足 L>2R 的阈值. 那么, 我们在坐标系上按 L 为边长划分网格后, 两个圆相交的必要条件就是它们圆心所在的网格八联通. 若将 L 保持在 (2R,4R) 的范围, 我们就能以 log 次重构的代价限定出一个良好的检查范围. 正好, 大圆间会相互消除, 所以无效检查次数并不多. 用 std::map 之类的暴力维护网格信息, 可以做到 O(nlog2n).

2.「UR #2」「UOJ #31」猪猪侠再战括号序列

  构造 (((...))), 最坏 n 次交换.

3.「UR #3」「UOJ #48」核聚变反应强度

  sgcd 一定是 gcd 除上 a1 的某个素因子, 直接枚举就行. 复杂度 O(V+q(logV+ω(a1))).

4.「HAOI 2018」「洛谷 P4493」字串覆盖

  挺 dirty 的题. 模式串长的在 fail 树的主席树上二分, 模式串短的按长度随便怎么预处理一下就行, 带一堆 log 或根号应该都能过.

5.「CF 1817A」Almost Increasing Subsequence

  呜… 大晚上脑子还是转得不快.

  考虑最优子序列的选取, 我们可以把原序列划分为若干个下降段: [a1,,ak1][ak1+1,,ak2]. 显然全局最优选择是 [a1][aki,aki+1][an]. 前后两项特判, 中间的 [ak,ak+1] 维护出下标, 区间查询时二分一下能取到的段即可. O(qlogn).

6.「CF 1817B」Fish Graph

  读题读成选导出子图, 纠结那个 "exactly 2 extra edges" 纠结了一年.

  选导出子图就是蠢蠢题了, 枚举关键点, 从其邻接点出发 DFS, 到第一次遇到另一个邻接点时取出该环, 再加上其他两条边就行. O(nm).

7.「CF 1817C」Similar Polynomials

  赋值的欲望在燃烧.

  一个简洁做法. 设 A(x)=i=0naixi, B(x) 同理. 那么:

A(x+s)=B(x){[A(n)(x+s)=B(n)(x)] | x=0an=bn,[A(n1)(x+s)=B(n1)(x)] | x=0nans+an1=bn1.

  用 Lagrange 插值的式子求出 an,an1,bn1 即可. 题目保证 s 存在, 可见我们的算法已经给出了唯一可能的答案. O(n).

8.「CF 1817D」Toy Machine

Wrong answer on pretest 1 🤡

  OI 无关手玩题. 注意到 LDRU 可以让左侧的块安全地 (不会被流放到右边去) 转圈, 我们不断重复这个操作, 就能把第 k (k(n1)/2) 个块移到最左边.

  k>(n1)/2 复杂那么一点点. 我大概也是乱胡胡出来了, 所以没办法编 motivation. 这里直接给出构造.

  • Step 0. 考虑如下局面:

    exp-a.png

    我们现在希望把 i 移到左上角.

  • Step 1. 类似上一个部分, 重复 RDLU 直到 i 右侧无方块:

    exp-b.png

  • Step 2. 重复 LDLU 把所有方块聚集到左侧, 同时 i 右侧仍然无方块:

    exp-c.png

  • Step 3. RDL, 游戏结束.

    exp-d.png

  每种操作的次数都可以根据最初的 k 直接算出来. 操作次数是 4n+O(1) 的.

9.「LR #9」「LOJ #560」Menci 的序列

  最 key 的地方在于看一眼特殊性质: "不存在两个相邻的 +". 先想想这该怎么做?

  每次要不 ×2 要不 +1, 我们一定不会让最高 bit 移出上限, 但我们又必须最大化最高 bit. 另外一方面, +1+1 连选显然没必要. 因此, 当且仅当答案数字最低 bit 为 0, 当前是一个 ×2, 且后面的 ×2 数量已经足够我们顶到上限时, 我们才会放弃这个 ×2, 期待后面有个 +1 让数变大. 贪心扫一遍即可.

  回到原问题. 拓展刚才的做法, 我们用 * 把序列分为若干段. 先将每一段中的 + 尽量进位, 得到一个和刚才同质的情况, 一样地贪心. 不过当一个段仅剩两个 + 时, 放弃进位而保持当前位置有 bit 就更优了. 还是 O(n) 扫一遍就行.

10.「UR #3」「UOJ #49」铀仓库

  二分答案, 枚举起点, 双指针最左最右碰到的箱子检查答案即可. O(nloga), 实现起来其实不太舒服. (

11.「UR #3」「UOJ #50」链式反应

  • Link & Submission.
  • 「A.数学-生成函数」「A.数学-多项式」

  裂变过程是一个二叉树上挂叶子的结构, 很容易想到用 GF 刻画树上的组合情景. 令 A(z)=iAzii!, G(z) 表示答案关于初始原子个数的 EGF, 那么

G=12AG2+1.

注意第一个原子一定是根, 所以全局排列数是 (n1)!, 左侧需要求导对齐指标.

  这个形式的 ODE 是 Riccati 方程的特例, 根据一些结论, 初等函数解是存在的, Wolfram 给出的结果是:

G=2tan(122A(k+x))A.

(其实也能算, 能算的!)

  当然, 常规做法就直接分治 FFT 解就行. 复杂度 O(nlog2n).

12.「JSOI 2018」「洛谷 P4518」绝地反击

  二分答案嘛, 余弦定理 (差点忘了 ?!) 求出每个出发圆交目标圆周的弧度区间, 显然我们可以钦定多边形存在一个落在区间边界的顶点, 枚举这个顶点就能生成多边形, 继而得到每个出发点能走到的顶点区间. 这样, 问题就转化成环上区间覆盖, 判断是否存在完美匹配. 在 Hall 定理的判据下最容易挂掉的显然是顶点区间, 扫描线维护判断即可. O(n2lognlogV).

13.「BZOJ #2567」篱笆 ⭐

  感觉这个思路的题没咋做过捏? 本题核心大概是从贪心过程的 DP 中生成不等关系, 同时对 "min{}" 形式的关系进行枚举放缩.

  仅讨论全局答案. 设 pi 表示从左到右第 i 个栅栏最终的中心点位置, 显然栅栏的中心点的相对位置不会改变. 我们容易得到 p 的递推:

pi=min{pi1+2r,ai+x}aix.

我们需要满足所有的 . 拆开 min:

ij, ai+x+2r(ji)ajx,

因此

xmaxij{ajai2r(ji)}2.

  对于链的情况, 我们还要求:

p1r(i, aix2(i1)r);pnr(i, ai+x+2(ni)rr).

  对于环的情况, 只需要倍长区间满足第一个判据即可. 这些判据涉及的区间信息都能用线段树维护. O(n+qlogn).

14.「洛谷 P9308」#1f1e33

(1)f(n)=i=1nj=1nk=1n[i+j+k=n]lcm(i,gcd(j,k))(2)=i=1n2d(ni)d<nilcm(i,d)φ((ni)/d)(3)=i=1ndi[di](ni)dgcd(n,d)φ(i/d)(4)=nd=1ndgcd(n,d)S1(n/d)d=1nd2gcd(n,d)S2(n/d)(5)=nTntTμ(t)td=1n/TdS1(n/(dT))TnTtTμ(t)td=1n/Td2S2(n/(dT)).

  上面是草稿. 解释一下:

  (2)φ((ni)/d)j,k[jk] 化简的结果.

  (3)i 转而枚举 (2) 中的 ni; 实际上应当有 2nin1, 但是 [di]×(ni) 已经处理掉这一条件带来的非法贡献了; gcd(ni,d)=gcd(ni+kd,d)=gcd(n,d).

  (4) 中,

S1(m)=i=2mφ(i), S2(m)=i=2miφ(i),

注意其求和下指标, 这里已经去除了 d=i 的贡献.

  (5) 中, 通过莫反引入了 T,t 的枚举. T/t 枚举钦定的 gcd, t 枚举是 n,d 的公因子但没被 T/t 枚举的部分, T 即二者乘积.

  最后的式子中, 乘积式的最后一项求和可以写作 T1(n/T)T2(n/T) 的形式. 到此, 预处理所有需要的中间函数, 可以 O(nlogn) 求解.

15.「UR #4」「UOJ #51」元旦三侠的游戏

  和 Candy Piles 没有区别. 注意即使是 powl 精度也会被打爆.

posted @   Rainybunny  阅读(262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示