第十六次

A

考虑 i=1nai=0,那随便分开两段即可。

否则设 i=1nai=x,若能找到 l<r 使得 i=1lai=xi=1rai=0,则可以分成 [1,l],[l+1,r],[r+1,n] 三段。

B

分治,每次考虑跨越分治中点 m 的贡献。

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

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

  • j(m,p][i,j]max 落在 [i,m] 中,

问题转化为求有多少 j(m,p] 满足 k|x=m+1jax+x=imax+maxx=imax

x=imax+maxx=imax 已知,对 j(m,p] 维护 x=m+1jax 的桶即可,

  • j(p,r][i,j]max 落在 (m,j] 中,

问题转化为求有多少 j(p,r] 满足 k|x=m+1jax+maxx=m+1jax+x=imax

x=imax 已知,对 j(p,r] 维护 x=m+1jax+maxx=m+1jax 的桶即可。

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

C

数位 DP,设 fx,S 表示填到第 x 位,填了 S 中的数的方案数,求第 k 小直接二分。

scanf("%llx", &x) 可以输入 16 进制无符号长整型。

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