A
用计算器式显示数字,可以显示 段。可以显示的最大数字是多少?
如果用了一个需要至少四段的数字,一定不如把这个替换成两个 好。
如果一共可以用偶数个,一定是全部 。
如果一共可以用奇数个,一定是开头一个 ,之后全是 。
B
给定一个 序列 和 , 为 的无限重复。求 的个数, 满足: 的前 个元素中的 的个数减 的个数等于 .
令 。
注意到 .
而 可以预处理出来。
我们只需要枚举 ,判断 是否为 的倍数即可。
注意,不仅要判断倍数,还要判断 是否非负!!!
C
老套路题。
记 为从 号位置开始,下一个 在哪里出现。
一个贪心:如果遇到一个能匹配当前字符的,就一定要配上。
D
给定 ,求所有 满足 .
,不妨令 ,这样
于是现在的问题转化为:
设 ,因为 ,则 。
此时应有 ,而每一个与 的 等于 的数,都可以唯一对应到原问题中的 。
这时问题转化为求 中和 互质的数的个数,发现 的个数就是 。
而 是否成立还要看 ,但是 说明 说明 说明 说明 矛盾。
所以答案就是 .
E
给定一个 的排列 和一个花费数组 。
可以选一个 把 分成两半:.
可以选择这两组中的一些元素移动到另外一组,第 个元素的移动代价是 。
经过一些移动后,要求第一组中所有元素都小于第二组中所有元素。如果某一组空了,也满足条件。
求最小代价和。
枚举 ,表示最终我们希望 在第一组中。
令 表示此时把排列分成 两段的最小代价。(此时就是当我们枚举 时 每变一次都求一次)
对于 时,( 中不属于 的元素的代价之和)+( 中属于 的元素的代价之和),这时我们知道,如果要 在第一组,答案就是此时的 。
现在的问题在于,我们不能对每一个 都求一次 数组,复杂度会爆。
我们发现,当 加 时,变化其实很少: 都 , 都 。 表示在排列中 的位置。
这是因为如果我们要让 去第一组,那所有初始没有包含 的分法,也就是在 分开的方法,都需要额外花 的代价把 放到左边。
这可以用线段树维护。区间加 + 区间最小值(求 的最小)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!