第六次

CF 神秘题

A

考虑 n 位置上的数 an,发现其与 (an,n] 的数形成逆序对。

于是将 an 与这些数依次交换,发现它们依次减一,且此时 an=n,于是规约成规模小 1 的子问题。

B

表示任意 01 串。

x 是奇数,则 x 形如 11

x 左移至 lowbit 对齐原 highbit,得到 y 形如 11000

xy 得到 z 形如 101

z 加上 y,此时 z 形如 1011

z 异或上 2y,此时 z 形如 111

z 异或上 x,此时 z 形如 1000,这个 1xhighbit 左边一位。

用这个 1 消去 y 除其 lowbit 外其他位,此时 y 剩下的 lowbit 就是 xhighbit

然后用此时的 y 消去 xhighbit,如此直到 x=1 即可。

C

分治,设当前区间为 [l,r],考虑跨过分治中点 m=l+r2 的满足条件的区间个数。

枚举区间左端点 i[l,m],设右端点为 j,则对每个 i,总有 p1,p2 满足:

  • j(m,p1][i,j]max,min 均落在 [i,m] 中,

则若此时 popcount(maxk=imak)=popcount(mink=imak),则所有 j(m,p1][i,j] 均符合要求,否则均不负责要求。

  • j(p1,p2][i,j]max,min 一个落在 [i,m] 中,一个落在 (m,j] 中,

min 落在 [i,m] 中,max 落在 (m,j] 中为例,

问题变为统计 (p1,p2] 中有多少 j 满足 popcount(maxk=m+1jak)=popcount(mink=imak)

直接开桶维护 cx 表示当前 (p1,p2] 中有多少 j 满足 popcount(maxk=m+1jak)=x,更新 p1,p2 时更新这个桶即可。

  • j(p2,r][i,j]max,min 均落在 (m,j] 中,

问题变为统计 (p2,r] 中有多少 j 满足 popcount(maxk=m+1jak)=popcount(mink=m+1jak)

发现与 i 无关,提前预处理 ex 表示 (m,x] 中满足该条件的 j 的个数。

然后倒序枚举 i,发现 p1,p2 单调后移,双指针即可。

D

不会正解。

搜的时候保证每步合法,可以 90 分。

发现此时根据剩余牌可以确定当前局面,记忆化一下可以过。

posted @   Jijidawang  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示