A
先把第一个加到 中,然后扫到第一个不为 的开始给 。
正确性显然。
code
B
可以交换,也就是可以任意重排。
那么记录一下 的个数,从第一位开始模拟,知道 或 不够即可。
code
C
从低位往高位一位位做,假设当前做到第 位,有 个 ,那么做完后,可以两两配对得到 个 ,如果某一位是 ,并且 为 就无解。
code
D
设 为考虑前 个数字,留 / 不留 的方案数。
首先考虑不留 的部分。
想要删掉 ,至少要找到一个小于 的数才能做到,我们记 为 左边第一个小于 的数。
那么 。
因为想要删掉 至少需要包含区间 ,当然有可能是更前面的数,但那种情况也没有留 中的数,所以也计算在了 中,把 中的数删掉后,剩下的 随便操作,我们并不关系 是否被删,所以 留和不留都加上。
考虑留 的部分。
第一个想法肯定是 ,因为会觉得既然留 那就前面所有的情况加上 。
但其实这样会忽略掉一些情况,如可能有些数等到 加入序列后才能被删,如果直接拿 算的话会算少。
同样依赖 ,考虑 之间的操作,会删掉中间一段数,然后提供了 的贡献。
为什么不用加上 ?
因为这种情况会被前面的考虑,当然 不会被考虑,所以加上 即可。
得到 。
发现是区间和的形式,前缀和优化即可。
code
E
首先考虑如何构造出一组满足题目要求的解。
看到限制比较多的题目,想到网络流,我们给每一行每一列都建一个点,记为 。我们给每个行的点连一条 流量为 的边, 连一条流量为 的边,对于在一个点 放 ,我们让 向 连一条流量为 1 的边,对改图跑最大流即可。
对于原问题,考虑费用流,对于每个 的点,降他的费用设为 。
首先强制所有 都变成 ,那么如果他最后变成了 1,那么我们就要剪掉这个费用,那么我们把这类点的费用设为 -1,即可。
直接跑最小费用最大流。
code
F
string,待补。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统