CF 1257 题解
CF 1257 题解
A Two Rival Students
每次交换都可以让距离增加
题目说至多而不是恰好交换
B Magic Stick
一个重要的观察是: 如果能够得到
考虑操作
首先, 一个观察是, 如果我有
进行一些尝试:
考虑我现在想找到一个数
如果它能够变成
因此如果它能变成
这个数加上一个数约束严格更强, 把它变成
因此有
以此类推:
我们发现, 大于等于
模拟一下就能发现,
C Dominated Subarray
发现一个合法序列至少要有两个一样的元素, 找最近的两个相邻元素距离即可.
D Yet Another Monster Killing Problem
发现这个怪物需要顺序的打, 那只能 dp 了.
设
设
考虑如何 check.
我们二分到一个
抽象出来, 现在有
维护一个横坐标递增, 纵坐标递减的链, 找到第一个横坐标能够包住
这个链用单调栈即可.
二分套二分, 复杂度
E The Contest
发现操作数等于初始时不在指定位置的元素数量.
我们钦定结束时
根据上面的理论, 则有:
这样, 答案就拆成了
先用差分优化区间加来求出来
F Make Them Similar
发现前面一半和后面一半的二进制位是独立的, 可以前后分开搜两边.
设对于一个
这可以转化为一个字符串相等的问题. 用 hash 维护, 然后把两边搜出来的东西查看 hash 是否有一致的.
G Divisor Set
对于一个集合
首先, 容易构造这样一个方案, 充分性显然.
下证必要性:
对
把所有的
这个结论对于数字一样成立, 证明特别复杂 不会
求方案数相当于你现在有
这个问题相当于一个背包, 而背包就等价于卷积. 我们设
实际上是好做的, 每次考虑用前面一半的结果和后面一般的结果做 NTT 即可, 递归的去做, 每一层的复杂度单 log, 有 log 层, 因此总复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统