7/10 考后总结
时间安排#
8:30--9:30
读题,T1乍一看有点像 min-max 的模型,不过并不能简化问题,考虑计算出每个状态是否合法,然后直接做 DP ,T2不太知道怎么做。
9:30--9:50
T2,对每个右端点暴力存左端点,可以拿 bitset 优化一下,做到 。
9:50--11:50
T1,问题等价于给出 集合 p 和 ,判断所有可能的 ,其 是否满足条件。
考虑搞个超集并集什么的做容斥。
不会。
11:50--12:00
把 T1,T3 暴力写了。
12:00--13:00
想 T1 。
回顾反思#
T1:
魔改 FWT 。
考虑实际上是对于每个 求 是等于 。
可以构造函数
最终只关心 是否成立。
发现其形式与 FWT 的形式类似。
考虑每一位时,当且仅分治的两边都为 1 时使得式子中 有 -1 的贡献;否则无影响。
那么可以类似改写 FWT 为:
进一步的,由于 初始时都为 0/1 ,且最终只关心是否等于全集大小 ,那么可以用乘法代替,只看最终是否等于 1 。
进一步地,由于 的第二维全是 0/1 ,且只涉及乘法,那么可以压为一个 int ,用位运算代替原运算。
那么只关心 是否成立。
T2:
有贪心做法。
固定一个左端点 i 后,另初始区间 为 。
每次查看区间内每个点最近能跳到区间外右边的哪个点,设这个位置为 ,更新区间为 。
那么每个 贡献的答案就是这样跳的次数。
考虑优化。
对每个 记一个 ,初值为 inf 。
从右往左枚举左端点,对于每个可以跳跃的关系 ,令 的 对 取 min 。
那么 的答案就是只考虑 的 的严格上升前缀最大值序列的长度 (可能需要因为边界对值 -1)。
用吉司机线段树维护严格上升前缀最大值序列长度和即可。
T3:
感觉是简单题(。
最近没怎么写过点分治有点生了。
给树 ,多次询问 ,求一个 z ,使得 和最小,求这个值。
考虑对 T1 做点分治,那么对于每个分治部分, z 对 x 的贡献分别有常数 ,即在 中里分治中心的距离,那么对于 ,就是要求 z 使得 最小,可以直接建虚树后换根 dp 。
于是就是点分治套虚树换根 dp 。
另外也存在更好写的做法,
依旧是枚举 的分治中心,对于每个点直接枚举 中的分治中心,处理贡献。对于每个询问,直接枚举两个树的分治中心,用预处理的权值可以直接计算。
另外卡不满的暴力貌似能多冲好多分。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端