Live2D

Solution Set -「LOCAL」冲刺省选 Round VII

Summary

  三道结论题,毁灭吧。

  A 题一开始思路偏了,发现答案最高 bit 能固定之后接下来的结论就顺理成章了。

  B 题哈哈哈哈又是经典:我结论猜对了,然后心里给念叨,念着念着嘴瓢了,写暴力出来错了,然后就没分了。

  C 题:你怎么不放 A 题?

  策略不对头啊哥,你怎么没先发现 C 题最水呢?这样真的很危险。

Solution

A 合成小丹

  给定可重集 A={an},进行 n1 次以下操作之一:

  1. {x,y}A,令 A(A{x,y}){(xory)rsh1}

  2. xA,令 AA{x}

其中 or 是按位与,rsh 是右移。最终 A={r},求出可能的最小 r

  n105w=60ai[0,2w)


  把原问题说好听点:在 A 里选一些数做 1. 操作,最小化结果 r。根据经验,位运算下的最小化问题很有局部性,我们可以尝试先最小化 r 的最高 bit。

  记 high(x)=log2x (x>0)。在这一目标下,显然,当且仅当 high(x)=high(y),对 (x,y) 的操作才是有意义的。我们按 high 降序模拟,看看最低能在哪个 high 处留下一个数。记此时的 high 值为 h。可见,high(r)=h

  由于 (xory)rshk=(xrshk)or(yrshk),那么对于每个数 x,若它参与了 r 的合成,则它至少被 rshhigh(x)h 次。当然,这一次数的实际值越小,我们就更有可能合成出 h 最小的 r。这印证了我们在上文直接按照 high(x)h 这一 rsh 次数对 x 进行的归类的确能求到最小的 high(r)

  想一想,被额外 rsh 的数就没用了吗?并不。我们可以用它们作为 1. 操作的“炮灰”,让另一个数被 rsh,甚至,“炮灰”和“炮灰”还能在 1. 操作中合成更“厉害”的“炮灰”。

  回到解题,既然 high(r) 定了,我们可以从高到低枚举 r 的 bit,检查这一 bit 能否取 0(局部性)。根据上文结论,对于每个数 a,我们可以求到它至少被 rsh 多少次后,被 orr,才不会破坏已经确定的高位 bit 和当前 bit 假定的 0。被 rsh 的次数越小越好嘛,我们直接把这一次数当做 ahigh,在此模拟上文求 h 的操作,看看能不能把同样的 h 取出来。若能,则这一 bit 可以为 0

  暴力实现是 O(Tnw2) 的,不过瓶颈是位运算和整数自加,而且难卡,所以我过了。对 r 中每个 0 分别构造对每个数 a 的右移次数限制,精细实现可以做到 O(Tnw)。讲个笑话,有人 O(Tnw3) 过了。

B 路过中丹

  对于字符串 T,成一个合法遍历 P=p1pk,满足 pi[1,|T|],p1pk,|pipi1|=1,且 T=Tp1Tp2Tpk 是回文。若 T 的每个下标都能存在于一个合法遍历中,则 T 合法。给定字符串 S 以及 q 次询问,每次给出 [l,r],询问 S[l:r] 是否合法。

  |S|,q106


  手玩一下样例:若存在 Ti=Ti+2,则 T 合法。

  证明,构造遍历:Ti+2T2T1T2TiTi+1Ti,是回文。另一侧同理。

  另一个显然的结论:若 T 中的每个字符都存在于某个长度大于 1 的回文串中,则 T 合法。(草了,我上面那个对了这个胡错了。)

  经讨论可以说明:不存在其他有效的遍历方案使得不满足这两个条件的 T 合法。

  怎么维护?第一个结论直接记前缀和。第二个,Manacher + 单调栈求出 S 中从 i 开始的最短回文串结束位置 ri,以及到 i 结束的最短回文串开始位置 liS[l:r] 合法,当且仅当满足第一个条件,或者不存在 i[l,r],使得 li<lr<ri。按照询问右端点离线,BIT 维护一下每个左端点的合法情况即可。复杂度 O((n+q)logn)

C 膜拜大丹

  有一个有向图 G,结点编号 1,2,,n+m。对于结点 i[1,n]i,n+1..n+aiE;对于结点 i(n,n+m]i,1..biE;不存在其他边。现限定 1..n 最多存在于 c1..n 个简单环中,n+1..n+m 最多存在于 d1..m 个简单环中,求能取出多少个简单环。

  n,m5×105


  显然:

  • 最优情况下,环是二元环;
  • 按编号降序选二元环,答案最优。

降序枚举 n..1,维护在 n+1..n+m 里能作为二元环另一个端点的结点集合,模拟即可。复杂度 O((n+m)logm)

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