第五十七次

A

B

fi,0/1/2 表示 [1,i] 形成的,以 i 结尾的 / 以 i1 结尾的 / 总共的排列方案数。

C

两维独立,问题变为给一堆线段,每个线段可以选中间或两边,求选出的东西之交最大是多少。

按端点把数轴分段,则钦定任意一段在最终的交中,就可以确定所有线段的选择方案。

定义 f(i) 表示钦定 i 段在最终的交中时交的大小,则答案为 maxf(i)

考虑从左往右依次钦定每段在最终的交中,则所有线段初始都选两边,

钦定到一条线段内部时这条线段切换为选中间,再次钦定到一条线段外部时这条线段切换为选两边。

Sol 1

考虑扫描时,线段树维护当前选择方案下,每段被覆盖多少次。

则切换选择方案相当于区间加减,当前 f(i)n 的个数。

被卡常了,恼。

Sol 2

考虑哈希当前选择方案,对每条线段随机赋权,线段 i 的权值 vi{aii 在当前方案中选中间bii 在当前方案中选两边,其中 ai,bi 随机生成,

则钦定 i 段必选时,选择方案的哈希值 hivj,于是 f(i) 即为哈希值与其相同的段的长度之和。

D

分治。钦定左半区间“占大头”,即左半区间合并后的最高位 hl 不低于右半区间合并后的最高位 hr

此时对左端点 lmid,可以发现 i=lrai=2hl+1r>mid 恰为此钦定下能与 l 合成合法区间的 r

所以只需对每个 l 统计 i=mid+1rai=2hl+1i=lmidair 的个数,把每个 ri=mid+1rai 装进桶里即可。

但你发现它太大了装不进桶里,于是模一个大质数就行了。

右半区间“占大头”同理,注意两边最高位相同的区间会被重复算。

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