Live2D

Solution Set - “潮汐守候终结放逐月圆”

Defining LATEX macros

  这篇 sol set 很长哟~

0.「NOI Simu.」游戏 ⭐

  • Private link | 你放 MTT 兔就君子动口不动手了.
  • 「A.数学-多项式」「B.复杂度平衡」

  非法条件是不存在长度至少为 =2k1 的同色段, 显然计数这个非法序列数量更方便. 初等地, 设 fi 表示长度为 i 的非法序列数量, 我们有

fi={mi,i<(m1)j=11fij,i.

  一方面, 对于 f, 我们可以 O(loglogn) 地大力 Bostan-Mori 算远项. 另一方面, 引入 GF, 可以发现

F(z)=mm1i0((m1)(zz)1z)i=mm11z1z(m1)(zz),

考虑系数提取. 设 gn=[zn]11z(m1)(zz), 那么

gn=[zn]i0(z+(m1)(zz))i=[zn]i0zi(m(m1)z1)i=t0(nt(1)t)mnt(1m)t.

组合数可以 Lucas 求, 那么这样可以得到一个 O(p+nlogpn) 的算法. 上下平衡一下复杂度就能得到正解. 当然, 似乎可以强行暴力卷积, 将更大的计算量放到第二种算法上.

1.「NOI Simu.」海盗 ⭐

  不难发现, 我们可以通过描述 i(i+1)modn 之间传递的金币数量 xiZ 来描述一种方案. 先假设 xn1=0, 设 f(i,x) 表示 [0,i] 内的所有海盗已经合法, ii+1 传递的金币数量为 x 时的最小代价, 那么

f(i,x)=min{f(i1,x)+|x| | x[li+xai,ri+xai]}.

从维护函数 fi(x) 的角度思考, 从 fi1(x)fi(x), 我们进行了如下变换:

  • fi(x)=min{fi1(x+t)t[0,rili]}.
  • fi(x) 整体向左平移 liai 个单位.
  • fi(x)fi(x)+|x|.

注意 |x| 的凸性, 这提示我们可以用 slope trick 维护这个函数. 具体来说, 用两个堆负斜率突变点和正斜率突变点. 前两个操作都比较简单, 第三个操作, 设函数斜率从 1 突变向 0 的位置是 x=p, 从 0 突变向 1 的位置是 x=q, 讨论:

  • p0q, 两个堆各自加入一个 0.
  • 0<p, 此时 p 将进入正斜率突变的范围, 将 p 取出加入另一个堆, 然后在负斜率堆中加入两个 0.
  • q<0, 类似.

这样单次可以做到 O(nlogn).

  如何破环? 自然的想法是枚举 xn1. 可以证明答案关于 xn1 的函数 g(x) 仍然是凸函数, 这样就能 O(nlognlogai) 求解了.

证明   首先, 不妨把 {xn} 的定义域扩大到 Rn. 利用整数费用流的最优解可以是整数的性质, 这并不会影响答案.
  设 P={p0,p1,,pn1}Q={q0,q1,,qn1} 是让各自的 g(x) 取到最小值的一种方案, 我们只需要说明 R=(P+Q)/2 是一组合法方案, 且 R 的代价不超过 (g(pn1)+g(qn1))/2 即可. 这里简单计算一下即可证明, 接下来思路比较明确, 就略过了.

2.「集训队作业 2020-2021」「LOJ #3405」Gem Island 2 ⭐

  • Link & Submission.
  • 「A.数学-组合计数」「A.数学-数学推导」

  (dm, rk, 你这变量名太怪了.)

  前 k 大? 钦定排名什么的不太好做, 我们可以尝试在值域上求解. 例如, 在一个固定的方案中, 设 ci 表示值 i 的个数, 那么该方案的贡献是 i1min{ci,k}.

  设 g(a,i) 表示钦定了 i 个位置的值 a 的方案数, 显然:

g(a,i)=(ni)(m(a1)i+n1n1).

对应地设 f(a,i) 表示恰好 i 个位置的值 a 的方案数, 反演出:

f(a,i)=ji(1)ji(ji)g(a,j).

继而, 我们可以表示出答案:

ans=a1i0f(a,i)min{i,k}.

  这个式子带着 f 算就很没前途, 接下来我们还是得拆开 f 化简.

ans=ai(ji(1)ji(ji)g(a,j))min{i,k}=aj(1)jg(a,j)ij(1)i(ji)min{i,k}.

(你这啥也没化简啊?) g 是可算的, 我们重点优化最后一个求和. 直接来嘛:

h(m)=im(1)i(mi)min{i,k}=i=0k(1)i(mi)i+ki=k+1m(1)i(mi)=[zk]ϑ(1z)m1zk[zk](1z)m1z(m>0)=m(1)k(m2k1)k(1)k(m1k)(m>1)=(1)k(m2k1).

(呜… 重名了, 上式的所有 m 与全局的 m 无关.) 到此, 我们欲求

ans=a=1j=1+a>1j>1(1)j+k(j2k1)g(a,j)=+a>1j>1(1)j+k(j2k1)(nj)(m(a1)j+n1n1)=+t=1m(mt+n1n1)jtj>1(1)j+k(j2k1)(nj)=+j=2n(1)j+k(nj)(j2k1)jt(mt+n1n1).

最后一个和式可以高维前缀和, 这样我们得到了 O(nloglogn) (n,m 同阶) 的算法.

3.「UR #12」「UOJ #181」密码锁 ⭐

  竞赛图的缩点后一定是满足每个点都向后面所有点连边的链, 这都不知道的吗…

  因此, 我们只需要计数非空割集的数量. 若不考虑特殊的边, 割 (S,US) 出现的概率是 2|S|(n|S|), 因为特殊边很少, 我们尝试在此基础上更正特殊边的概率贡献. 可见, 若一条特殊边取 USS 方向的概率是 p, 则它应该带来更正因子 2p. 而特殊边的情况只与 S 和该特殊边参与形成的连通块 B 的交集 SB 有关. 我们只需要对每个 B 的子集 X, 求出 SB=X 的更正因子, 背包合并出 S 的所有情况下更正因子乘积之和, 再用无特殊边的方法计算答案即可. 复杂度 O((m+n)2m).

4.「UR #25」「UOJ #805」设计草图

  不难发现, 某个子串 S[l:r] 合法, 当且仅当:

  • 2(rl+1).
  • 将所有 ?_ 替换为 (_ 后, 子串所有前缀均满足 (_ 个数不少于 )_ 个数.
  • 将所有 ?_ 替换为 )_ 后, 子串所有后缀均满足 )_ 个数不少于 (_ 个数,

  后两个限制相对独立, 我们考虑求出 LiRi, 分别表示从 i 开始, 满足两个条件的最远端点, 这个可以栈模拟一下括号匹配求. 此后就 BIT 贡献答案即可. O(nlogn).

5.「UR #25」「UOJ #806」见贤思齐 ⭐

  • Link & Submission.
  • 「A.数据结构-可持久化线段树」「B.倍增」

  先胡一下赛上胡的东西. 考虑 subtask 3, 我们尝试对每个元素 ai 维护其变化序列 Si=[si,0,si,1,], 使得 ai,t=ai+j<tsi,j. 可以发现, Sn=[1]+. 有了这个边界, 我们只需要考虑 SpiSi 的更新过程.

  在漫漫时间长河中, 一定存在一个时刻 t, 有 ai,t=api,t, 此后两个数的变化都是 "若 api 在当前时刻 +1, 则 ai 在下一时刻 +1", 也就是说, 大体上, SiSpi 向右平移一个位置的结果. 在这个 t 时刻之前的部分就是简单的全部 +1 或者全部不变, 也不难维护. 我们用一个持久化线段树维护所有序列即可. 在 ai,0>api,0 时, 需要实现一个线段树二分来找 t.

  全局情况, 我们需要处理的是内向基环树. 显然环上最小值也是 [1]+, 从这个位置出发就能推出其他所有点的 S 了, 复杂度是同样的 O((n+q)logn).


  不想写? 看看 zak 的做法吧家人们!

  考虑最基本的递推形式, ai,t=min{ai,0+t,max{ai,0,api,t1+1}}, 虽然正确性不言而喻, 但这样的递推可以规避掉一些分枝判断, 更便于优化. 如果我们对递推式中的 ap,t1 进行迭代, 我们就会得到一系列 [ai,0,ai,0+t] 的区间来约束 ai,t 的上下界. 我们直接倍增求出区间嵌套关系第一次被破坏的位置, 就能求出答案了. 复杂度还是 O((n+q)logn).

6.「NOI Simu.」哈密顿路

  比较脑筋急转弯的题. 注意图是无向图, 因而哈密顿路可以通过从某个特定点出发的两条点不交路径生成. 不妨取一个特殊点 s, 求出 f(S) 表示从 s 出发经过集合 S 内的点时, 可以以哪些点作为终点, 直接枚举下一步就能转移. 最后用所有 f(S)f(US) 贡献答案即可. 复杂度 O(n2n).

7.「NOI Simu.」统一省选

  注意到所有的单个关卡都可以表示成进入血量 x 和离开血量 y 的函数 f:xy, 满足

f(x)={0,xx0y0,x0<xx1y0+xx1,x1<x.

而这种分段函数相互复合, 得到的函数仍然具有同样的形式. 讨论复合结果时, 可以讨论内层的 y0 与外层的 x0,x1 的位置关系, 情况并不多. 线段树维护所有区间的函数即可, O(n+qlogn).

8.「NOI Simu.」并行计算 ✡️

  这题很麻烦的点在于需要构造步数严格最小的方案, 我们必须得找到一个紧的下界, 才有构造的目标.

  比较简单的一个界是 log2n, 毕竟我们总得构造一个长度为 n 的序列出来.

  接下来, 我们通过描述 "合法且优秀的操作" 的性质, 得到另一个下界.

  首先, 可以发现, 我们任何时候得到的序列都应该有着连续的值, 即恰好包含某个区间 [l,r] 内的所有整数. 此外, 我们也没有必要将同一个序列多次造出. 据此, 我们可以建出一张图, 图中结点代表某个 [l,r], 若 u 不是叶子, 则其应当有两条入边 x,u,y,u, 表示我们通过 x+y 得到 u. 这样, 我们得到了一个 DAG.

  接下来又是 key 但不知道 motivation 的东西: 我们考虑所有可达 [1,n] 的结点, 它们的诱导子图构成一棵内向树 T, T 显然共有 n 个叶子, n1 个非叶结点, 每个非叶结点都恰好有两个儿子, 各结点的区间或离或含. 设 A 为树中 [1,i] 的数量, 注意到我们在得到 [1,i] 时, 必然需要先得到某个 [1,j][j+1,i], 据此可知我们一次只能合成一个 [1,i] (否则, 原材料中必然有相交而不相含的区间). 设操作次数为 L, 我们得到 LA1.

  然后考虑树外, 树外还有 nA[1,i], 我们至少也需要 nA 个单元操作来生成它们. 设 S 为单元操作数量, 结合树内树外, 我们得到 SnA+n1=2n1A, 则 LA12nS2, 同时显然有 LS/4, 因此 Lmax{S/4,2nS2}2n25.

  到此, 我们得到了一个 Lmax{log2n,2n25} 的界.

  爆搜出 n16 的最优解, 对于 n>16 的部分, 用 n=16 的解不断压缩, 可以得到 6n161+O(1) 的解, 大力调整最后的 corner 即可. 对于给出的数据, 大多再添加一个不少于剩下数个数的最优构造就能达到下界. 一个不平凡的情况是, 若剩下 21 个, 需要用 21 的最优解 (恰好可以是两个 11 的最优解拼起来) 而不能再用 16 压缩. 给出的构造顺便就完成了下界证明.

9.「NOI Simu.」游戏 ⭐

  第一问没手也行: 独立地考虑每个位置被选入方案的概率. 假设我们在所有合法方案中随机挑一个出来, 记事件 Ai,j 表示 (i,j) 存在在这个方案中的概率, 那么

Pr(Ai,j)=1ij.

很显然, (i,j) 左下方的矩形中必然存在一个在方案中, 第一次在这个矩形中选位置就选到 (i,j) 的概率即 Pr(Ai,j). 最终答案即 hn×hm, 其中 hk 即调和级数第 k 项. 复杂度 O(max{n,m}).

  第二问就有点哇塞了. 经过一些尝试, 我们发现我们几乎只会描述 Pr(Ai,j), 甚至连总方案数都不是很好求, 更不要说 DP 求答案了. 如何用这个概率描述答案? 设 P 是方案集合, pP, 可以想到

E(|p|2)=1|P|pP(i1,j1)p(i2,j2)p1=(i1,j1)(i2,j2)1|P|pP[(i1,j1)p][(i2,j2)p]=(i1,j1)(i2,j2)Pr(Ai1,j1Ai2,j2).

好消息是, 我们的确用单纯的概率描述了答案. 坏消息是, 这个概率咱还是不会求啊?

  尝试引入一个构造性转化 (实际上兔是硬想的, 但加上这个转化的确会清晰很多). 我们考虑全体 n×m 阶排列, 将它们填入网格图, 对于某个排列 σ, 我们按照值升序枚举排列的元素, 若这个元素所处的位置没有被删除, 则将其加入方案序列, 这样就能得到 σ 所对应的方案 pσ. 我们惊讶地发现, 可重集 Ω={pσ|σSn×m} 正是 P 正比于元素概率展开得到的古典概型的样本空间!

  若 (i1,j1)(i2,j2) 的左下矩形存在包含关系, 不妨设 i1i2j1j2, 注意到这里有 Pr(Ai1,j1Ai2,j2)=Pr(Ai1,j1), 因而此时

Pr(Ai1,j1Ai2,j2)=Pr(Ai1,j1)Pr(Ai2,j2)=1i1j1i2j2.

  否则, 两点位置关系形如

fig.png

我们要求 AB 都在方案中, 这里就可以通过约束 σAσB 来达成这一点. 不妨设 σA<σB, 明显, σA 是阴影中所有数的最小值, 概率为 1i1j1+i2j2min{i1,i2}min{j1,j2}, σBB 矩形中的最小值, 放在排列上可以明显看出 σA 的约束不影响 σB, 因此这里概率就是 1i2j2. 最终, 我们得到

Pr(Ai1,j1Ai2,j2)=1i1j1+i2j2min{i1,i2}min{j1,j2}(1i1j1+1i2j2).

  By-definition 的算法是 O(n2m2) 的, 需要稍稍优化最后一个式子. 我们枚举 i1<i2 时的 i2i1, 预处理自然数倒数等间距求和的结果, 再枚举对应的 (i1,j1)j2 贡献答案. 同理还需要枚举 j1<j2 时的 j2j1. 复杂度 O(max{n,m}nm).

10.「NOI Simu.」模拟赛

  水题放 T1 好不好? 水题放 T1 好不好? 水题放 T1 好不好? 水题放 T1 好不好? 水题放 T1 好不好?

  可以鉴定出, 我们需要手算答案序列 A 的 or-卷积正变换结果 A^, 直接展开有

A^S=i=1nj=1kpi,j[ai,jS].

鉴于 k 极小, 尝试讨论 T2[1:k] 对答案的贡献. 尝试构造容斥系数 fT 使得

mask(T)SfT=j=1kpi,j[ai,jS],

其中 mask(T)=jTai,j. 这样前面的乘积就可以高维前缀积 (好怪的仿词) 求出来. 当然, 这里的构造也没什么难度:

fT=(jTpi,j)/TTfT.

除法通过 a=c×0k 形式即可在算数域内完成, 这样就 done 了. 暴力做是 O(n3k+m2m) 的, 当然这个 fT 也可以高维前缀商 (???) 求出来, 可以把前半部分优化到 O(nk2k).

11.「NOI Simu.」MOMO ✡️

  希望出题人不要在题解中写谜语.jpg

  因为几乎是完全依赖题解做的, 所以讲解会很 unmotivated, 抱歉啦. 为方便阅读, 下划线字符记作 /_

  先考虑如何对树构造. 下用 xy 表示从 xy 的树上路径的点集 (注意, 含 x 但不含 y), pu 表示 u 的父亲. 不妨以 1 为树根, 字符串内字符编号为 2n. 我们通过 d(u,v)=x(ulca(u,v))1+x(vlca(u,v))1 来构造答案. 令 S1=OOO_, Su=Spu, 紧接着修改 Su,uM_. 可见, 对于任意 (u,v), SuSv 不一样的位置就是 uv 中所有结点编号对应的字符.

  推广到一般图上, 我们取出图的 BFS 树, 先在 BFS 树上进行上述算法得到一个初始答案. 不过两点 u,v 间的 BFS 树上距离可能大于原图上距离, 我们记这两个距离的差值为 gap(u,v). 接下来通过引入 /_ 来调整答案. 对于 gap(u,v)=k>0u,v, 我们期望在 Su,Sv 字符不同的位置引入总共 k不重合/_, 如果所有点对都成功地引入了恰当数量的 /_, 我们的构造就合法了.

  我们先来研究 gap(u,v) 的性质. 以下结论都是不言而喻的:

  1. vu 的树上祖先, 则 gap(u,v)=0.

  2. w=lca(u,v), 若 wv, 则 gap(u,pv)gap(u,v)gap(u,pv)+2.

  由性质 1, 我们不应该去动 Suu 的祖先们对应的字符, 那就只好调整 vlca(u,v) 中的点对应的字符了. 而又由性质 2, 最坏情况下, vlca(u,v) 上只有 gap(u,v)/2 个点, 这怎么办? 一个很好的 motivation 便是: 将从 1 数到 gap(u,v)=:kk 个自然数按奇偶性分开, 在 vlca(u,v) 上尝试找到所有 1,3, 的突变位置 (从 gap(u,)<x 变化到 gap(u,)x 的最高的点), 在 Su 中修改它们的字符; 同理, 在 ulca(u,v) 上尝试找到所有 2,4, 的突变位置 (从 gap(v,)<x 变化到 gap(v,)x 的最高的点), 在 Sv 中修改它们的字符. 这样, 所有的突变位置一定都能够被找到, Su,Sv 的构造就完成了!

  最后一个点, 我们当然希望对所有 (u,v) 都来这样构造, 但如何保证这些构造不会破坏彼此的合法性? 考虑所有影响到 Su 的构造, 我们枚举一个 u 的祖先 w, 然后再枚举 w 在外侧子树根 v, 处理 Suv 子树内的字符. 可见, 只要 v 子树内的点关于 u 的构造全部都选择了 "奇数构造" 或者全部都选择了 "偶数构造", 就不会产生矛盾. "一棵子树选择相同"? DFN 嘛! 我们按照 u 和子树根 v 的 DFN 大小关系选择奇偶构造就行了.

  复杂度 O(n3), 构造部分非常宽松, 怎么写都可以.

12.「HDU #6636」Milky Candy

  • Link & Submission (因为离开高版本语法就不会写代码, 所以就在校内 OJ 交了).
  • 「A.拟阵/拟阵交」

  带权拟阵交捏! 秉承多得少不得的原则, 我们得把选择取个补集才能描述限制.

  令 M1=(U,I1), 其中 U 即全体提示集合, SI1 当且仅当用 US 中的提示能解出方程组. 遗传性显然, 交换性可以放到图上证明. 对于 A,BI1|A|>|B|, 我们一定能取出 UB 在图上的环, 使得其中的提示没有都出现在 UA 中 (否则 |A||B|), 在这个环上未出现在 UA 中的提示中, 任意取一个加入 B 即可完成交换.

  令 M2=(U,I2), SI2 当且仅当 US 中从每个 NPC 获得的提示都不小于要求的 ki, 遗传性, 交换性显然.

  拟阵交之. 一个很 sweet 的写法是每次都 O(|U|) 判断独立性, 这样虽然是 O(r2|U|2), 但舒服很多.

13.「Gym 102156D」Pick Your Own Nim

  • Link & Submission.
  • 「A.拟阵/拟阵交」(怎么会布置这玩意儿的专题呢?) (我草? 去年今日, 我写了拟阵交的学习笔记???)

  设 Alice 给出的初始向量集合为 A. 令 M1=(U,I1), 其中 U 即全体可选向量集合, SI1 当且仅当可重集 SA 是线性无关组. 令 M2=(U,I2), SI2 当且仅当 Bob 的每个向量集合中最多一个入选 S. 两个拟阵的遗传交换不言而喻. 交之.

  有个小小的经验, 虽然拟阵交输入的两个拟阵的地位是等价的, 但可能对 I1,I2 的判断难度有所不同. 例如若对其中一个 I 的判断需要维护不支持删除的数据结构, 我们可以把它放在 I1, 这样增广的过程中只需要在固定 xVL 时枚举 y, 判断 I{x}{y}?I1, "删除" (更多时候是直接重构) 就不在瓶颈处了.

14.「UR #11」「UOJ #168」元旦老人与丛林 ⭐

  • Link & Submission.
  • 「A.图论-网络流-最大流/最小割」「C.性质/结论」

  嗯? 这是选拟阵题的时候乱入的吗? 还是有什么相关的分析呢?

  一道猜猜题. 我们不难发现一个图是丛林的必要条件:

  VV, 其诱导子图 G=(V,E) 满足 |E|2|V|2.

  可以证明, 这就是图是丛林的充要条件. 由于证明是重点, 这里就不放 <details> 框框了. 我们对 |V| 的大小归纳证明. 假设 |V|<n 时的所有图满足条件. 下考虑 |V|=n 的情况, 研究任意一个满足必要条件的图 G=(V,E).

  取 G 中度数最小的结点 u. 若 deg(u)4, 则 |E|2n>2n2, 不合假设. 因此必然有 deg(u){0,1,2,3}. 设 G=(V,E)G 删去 u 及其连边后得到的图, 讨论 deg(u):

  对于 deg(u)=0, 直接取出 G 中构造丛林的方案 (由归纳假设, 必然存在), 这显然也是 G 的构造方案; 对于 deg(u)=1, 将 u 的连边放入 G 方案中的任意一个边集, 就能得到 G 的构造方案. 这是两种很简单的情况. 对于 deg(u)=2, 设有 (u,x),(u,y)E. 我们取出 G 的构造方案, 将方案中的 (u,x)(u,y) 放入不同的集合, 也就得到了 G 的构造方案.

  下讨论 deg(u)=3 的情况.

  我们定义点集 V 在某个图中的诱导子图 G=(V,E) 是满子图, 当且仅当 |E|=2|V|2. 有引理:

  若 V1,V2 的在一满足必要条件的图中的诱导子图均为满子图且 V1V2, 则 V1V2 的诱导子图也是满子图.

  设 V3=V1V2, 对应诱导子图 G3=(V3,E3), V0=V1V2, 对应诱导子图 G0=(V0,E0). 我们需要说明 G0 是满子图. 因为 |E0|2|V0|2, 所以 |E1|+|E2||E3||E0|2(|V1|+|V2||V3|)2, 又因为 |E1|=2|V1|2|E2|=2|V2|2, 所以 |E3|22|V3|. 又因为 |E3|2|V3|2, 所以 |E3|=2|V3|2. 最终有 |E0|=2|V0|2, 引理得证.

  回到证明过程. 设有 (u,a),(u,b),(u,c)E, 可以发现, 必然存在 {x,y}{a,b,c}, 使得 G 中不存在包含 x,y 的满子图. 如果不存在这样的 x,y, 则必然存在分别同时包含 {a,b},{b,c},{c,a} 的满子图, 根据引理, 它们并起来可以得到满子图 G=(V,E). 此时令 VV{u}, EE{(u,a),(u,b),(u,c)}, G 就不满足必要条件了.

  现在, 我们可以取出这样的 {x,y}. 令 EE{(x,y)}, 由于 x,y 的性质, 此时 G 仍然满足条件, 取出它的构造方案. 最后, 将方案中的 (x,y) 替换为 (u,x),(u,y); 将 u 剩下的一条边加入另外一个集合, 就得到了 G 的方案.

  综上, 我们只需要检查 G 是否存在 |E|2|V|>2 的子图, 依次钦定 V 中每个结点入选子图, 跑最大权闭合子图即可. 采取退流操作即可降低复杂度. 最终复杂度 O(mn+nm) (前半部分是第一次在二分图上跑网络流的复杂度).

15.「洛谷 P9347」似曾相识燕归来

  某兔终于想起自己越来越长的 to-do list, 于是随机点了其中一道题. 妈的的确是依托答辩, 怪不得当时没做.

  注意到 a1=1 时, 操作 (1,i,j) 等价于交换 ai,aj, 因而我们构造的主要目标就是尽快令 a1=1. 未避免一些 corner, 这里只讨论 n>3 的情况.

  1. a1=1, 已经结束了.
  2. 否则设 ap=1. 若能找到一个 p<i 使得 ai<a1, 操作 (1,p,i), 结束.
  3. 否则, 我们尽量向第二种情况靠拢. 若 a13, 则必然能找到 1<i<p, 使得 ap<a1, 操作 (1,i,n) 即变成第二种情况.
  4. 现在 a1=2. 若 a2=1, 尝试找到一个 3i<n, 使得 ai>ai+1, 操作 (1,2,i),(1,2,i),(1,i,i+1), 结束, 且 a1=1,a2=2, 后续操作至多 n3 步.
  5. 若找不到这样的 i, 即 a3..n 有序, 可以暴力手玩出构造: 操作 (1,2,3),(1,2,3),(1,2,4),(1,3,4),(1,2,4). 注意 n=L=4 时会被莫名其妙认为无解.
  6. 最后一种情况, a1=2,a21. 设 aq=n, 若 q=2, 操作 (1,2,p),(1,p,n), 否则操作 (1,2,q),(1,2,p),(1,p,n).

  O(n). 还是欣赏一下这篇 sol set 里另外两道构造神题吧家人们.

posted @   Rainybunny  阅读(186)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-06-07 Note -「拟阵交」& Solution -「CF 1284G」Seollal
2022-06-07 Solution -「LNOI 2022」「洛谷 P8367」盒
点击右上角即可分享
微信分享提示