A
读错题了,真唐。
注意到是电性只和移动方向有关系,但是我们需要考虑虚实。
将其变为不交换,只变化属性,那么 只是属性变为碰撞球属性的相反属性。
因此我们考虑向左移动的球撞到一个向右移动的球后有什么变化,不妨设向右移动的球的树形分别为 ,则新加入一个属性为 的球(往左碰撞),会使得 被收集,然后序列变为
因此不妨设实为 虚为零,我们动态维护序列 ,有如下操作:
- 遇到一个正电荷球(右移),在 的末尾加入
- 遇到一个负电荷球(碰撞),将 的开头弹出并累计答案,在 的末尾加入
我们需要统计的是有多少个 被弹出。
不妨将当前局面的前缀负电荷球扔掉,这样我们保证 始终不空,那么最终只会弹出前 个球,并且我们只计算弹出的 个数。
也就是说,将原序列转为 01 序列(0 为负电荷),并删掉开头的零后,答案就是前 个数里面有多少个 。那么开头的零也就没必要删除了。
考虑计算,对于位置 而言,若这是一个 ,且被弹出,当且仅当 ,也就可以直接计算了。
显然, 递增, 递减,而 同样递增,因此 的总变化范围是有限的,所以可以利用组合数前缀和的技巧做掉。
B
先除掉 ,变为
注意到 ,因此质因子次数都是 ,那么我们就可以根据有没有质因子给每个元素赋值为最多 位二进制数(都不存在的位直接删掉,这样 对应满 ),不妨设这对应的二进制数为 ,问题就变成了树上有多少个连通块 ,。
当然,我们可以设 ,变成
定义 ,我们可以用生成函数来表达这个式子:
定义多项式运算
注意到 ,因此 若有值必然 。
可以暴力枚举 ,则选出可用点后,这个值是一个裸树上连通块个数计数,简单dp即可。
发现对于一个点 而言, 的 ,事实上只有
因此通过一定的预处理,可以做到
C
这题目没意义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!