Live2D

Solution Set - IQ ↓↓

  • Q: 为什么说雨兔是个傻子?
  • A: 因为一路上全是星号标记.

  呃, 本来的好像是 constructive || greedy, 但感觉最近整体题量不高, 就换成 2700-2900 了. 然后惊讶地发现这个区间好多 constructive, 麻了.

0. 「CF 1672H」Zigu Zagu *

  Link & Submission & Tag:「C.性质/结论」


  一个被忽略的方法——寻找操作前后变化形式优美的特征值.

  假设对序列 S 操作, 设其中 00 子段的数量为 x, 11 子段的数量为 y, 先后注意到

  • 每次被删除的序列是极长的 01 序列.

  • 删除偶数长度序列, xx1,yy1.

  • 删除奇数长度序列, xx1 或者 yy1.

  • xy>0, 存在可删除的极长偶数长度序列.

  故答案为 max{x,y}+1. O(n)O(1) 即可实现算法.

1. 「CF 1672F2」Checker for Array Shuffling *

  Link & Submission & Tag:「C.性质/结论」


  显然在所有能使 b 变为 a 的置换 σ 中, 操作次数最小者为轮换数量最大者. 为了让这一次数变大, 我们就需要让 σ 的环尽量多. 不难证明, 令每个环中恰好包含一个出现次数最多的元素, 可以取到这一最大值, 即元素的最多出现次数.

  注意到 F1 叫做 Array Shuffling, 我们已经会做了. 对于 F2, 我们只需要检查构造是否满足上述条件. 删除出现最多的元素, 拓扑检查置换是否有环即可. 复杂度 O(n).

2. 「CF 1661F」Teleporters *

  Link & Submission & Tags:「A.二分-二分答案」「B.Tricks」


  Learn to use binary search.

  问题具有多样的单调性, 二分什么呢?注意到对于每个 gap, 代价减少量与随投入量增加而减少, 因而可以想到二分最小可接受收益 x, 即, 只要投入一个断点, 代价减少量不小于 x, 就投入. 我们能求到此时 x 所对应的代价 f(x), 而 f(x) 是单调的, 我们能找到最大的使得 f(x)>mx. 接下来, 直到代价 m, 我们每次投入的减少量必然为 x+1. 简单计算即可. 复杂度 O(nlog2m).

3. 「CF 1658F」Juju and Binary String *

  Link & Submission & Tag:「C.性质/结论」


  可以轻松判无解或者求出答案子串中字符 1 的出现次数 x.

  然后获得神谕:答案不超过 2. 考虑将字符排列成环, 利用子串与整个串 1 的占比相同的条件, 可证环上必然存在长度为 m 的区间, 其 1 的数量不多于 x, 亦必然存在区间, 其 1 的数量不小于 x, 那么一定能调整得到数量恰为 x 的区间.

  利用神谕当然能做到 O(n).

4.「CF 1656F」Parametric MST

  Link & Submission & Tags:「B.贪心」「C.性质/结论」


  由于不可抗力断断续续不知道想了多久, 不过好歹做出来了, 泪目.

  先判非法:设 du 表示结点 u 的度数, 则当 audu 恒小于或恒大于 0 时非法, 排序之后分别以 a1an 建菊花图就能判断两种情况.

  再来看贡献计算, 先将形式单一化, f(t)=(n1)t2+minE{(u,v)E(au+t)(av+t)}. 显然为了在 t 一定时将其最小化, 一定是 1 连向所有正权边, n 连向所有负权边. 不难证明一定可以取某个 t=ai. 直接算就行. 复杂度 O(nlogn), 瓶颈为排序.

5. 「CF 1698G」Long Binary String

  Link & Submission & Tags: 「A.构造」「B.复杂度平衡」


  4. 和 5. 之间间隔了不可忽视的时间. 烦请忽视.

  忽略前导零, sF2[x] 上对应一个常数项为 1 的多项式 S(x). 我们的目标是找到任意多项式 R(x)F2[x], 使得 S(x)R(x)=xk+1, 并最小化这个 k.

  当然, R(x) 是任意的, 所以更合理的写法是找到最小的 k, 使得

xkS(x)1(modS(x)).

注意 F2[x] 下模 S(x) 的剩余系大小不超过 2degS(x), 所以可以类似 BSGS 来平衡复杂度. 令 B=degS(x)2, 设 k=tBr, 预处理 xrmodS(x) 的值, 枚举 t 求答案即可. 至少可以 O(|S|2B) 叭.

6. 「CF 1698F」Equal Reversal *

  Link & Submission & Tags:「A.构造」「C.性质/结论」


  先想想必要条件叭. 可以想到有解则需要满足:

  • a1=b1,an=bn.
  • 可重集族 {{ai,ai+1}}i=1n1={{bi,bi+1}}i=1n1 (你妈的, 没注意到).

  一般来说充要条件可以直接指向构造方法, 我们来试一试. 设 a1..i 已经匹配 b1..i, 设 ai=bi=x, ai+1=u, bi+1=v, 讨论:

  • a=[,x,u,,v,x,], 直接 reverse [x,u,,v,x] 段即可.
  • a=[,x,u,,x,v,], 尝试交换后面的 x,v 规约到前面一种情况.
    • 如果 [x,u,,v,x] 的可重集族与 [x,u,,x,v] 的可重集族相同, 那 a 必然形如 [,x,u,,v,,x,v,], 哈, 这个简单.
    • 否则, 必然存在一对数跨过 [x,v], 操作这对数.
    • (当然, 这两个讨论可以合并.)

  结束了, 暴力实现 O(n3).

7. 「CF 1697F」Too Many Constraints *

  Link & Submission & Tag:「A.图论-2_SAT」「B.Tricks」


  我没想到的不是 trick, 我没想到的居然是 2-SAT 😢

  令真值变量 xi,j=[aij], 建立 2-SAT 解出来即可, 复杂度 O(nk). 注意 减少了变量约束数量的规模, 应该是推广性比较强的 trick.

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