20240713总结(搜索专题,但是不想搜索)
A - Dima and Trap Graph
CF366D Dima and Trap Graph
题解:考虑二分满足答案区间,但是发现这个区间并不具有单调性。于是我们考虑固定一个端点(不妨固定左端点),然后二分右端点,此时右端点是有单调性的。
然后思考如何判断是否联通。这题可以直接使用并查集,把在当前判断的区间内的边并起来,最后看看 1 节点和 n 节点是否联通即可。
但是我本人的代码成分复杂,dfs剪枝也有,并查集也有。
B - Salazar Slytherin's Locket
CF855E Salazar Slytherin's Locket
题解:数位DP板子题,没什么好说的。
C - DZY Loves Colors
CF444C DZY Loves Colors
题解:管他那么多,我直接大力分块:
- 1.对于修改,对于左右端点的块下放tag,把记录块内是否为同色的标记记为false(虽然这个块仍然可能是同颜色的,但是当作不是总没错,整块答案和单点答案都要修改),然后对于中间每一个同颜色的块打tag(记得修改整块答案),对于不是同颜色的块暴力修改
- 2.对于查询,整块直接加答案,散点不要忘记加上对应块的tag
然后分块比ODT快,但是好像也是颜色段均摊?
D - Distinct Paths
CF293B Distinct Paths
题解:诈骗题,按照题目的意思,若有解,则:(n+m-1<=k),不然颜色就放不下了。
然后考虑搜索,但是肯定不能全部搜完,会TLE。
我是怎么知道的?(去CF找一份AC代码,发现下面的数据答案太大)
k很小,先压缩一个状态表示当前使用过的颜色。然后考虑对于每一个格子,如果没有放过颜色,那么从剩下的颜色中随便放一种本质是相同的,计算一次后直接累加答案即可。
E - The Great Mixing
CF788C The Great Mixing
题解:既然是搜索专题,我自然不会写搜索,但是还是先分析一下题面。
我们发现值域只有1000,却有1e6种汽水?所以先去重。然后把所有浓度减去n,把题目转化为调浓度和为0的汽水。
直接背包,dp[i+maxn]表示浓度和为i的最小消耗的汽水瓶数(因为有负数,统一加一个maxn),但是要注意当前浓度为正数和为负数的转移顺序不一样。
经过测试,数组开6e5,maxn开3e5能过。
F - Rats
CF254D Rats
题解:又是诈骗题,手动模拟发现一个炸弹最多炸到290个左右的老鼠,所以大于600只肯定炸不掉,先判掉。
然后直接从每只老鼠的位置开始搜哪些位置能炸掉这只老鼠,枚举位置,但是别忘了判掉只有一个位置能放炸弹的情况。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)