菜鸡选手只能打 Div.2 维持生活。
这次 10min 过了 AB,实力强劲!
C(二分、贪心)
然而还是卡 C 了。
发现答案下界是 。考虑选哪些满足 的 。发现选的数在所有满足条件的数中是一个后缀,并且如果最后降智为 是不优秀的。直接从后往前扫维护最终值并不好做,但是没关系,我们直接二分就好了。
但是上面做法实际上相当蠢。考虑最优的情况最后是 ,那么从 开始往前倒推就可以了。虽然有可能出现直接从 掉到零下的情况,但是 能做 肯定是能做的。我在想的时候没有仔细探讨这一点。
感觉有些信息维护不了的时候可以套上一个二分?
D
Wrong Answer on test 7.
先瞪这个题。直觉告诉我们差分数组并不会太大。假设差分数组是 。那么有关系式:。发现本质不同的 只有 个!那么我们开个 map 维护本质不同的元素然后暴力就好了。
令人谔谔的是我的直觉还告诉我若干个 答案是 。然后寄了。
E(dfs 树)
感觉丢 D 看这个 E 可能更好。但是还是做了好久,最近好像接受了一些奇怪的 DP 技巧后魔怔了,不会推充要条件了。
显然 MST 和 dfs 树都是唯一的。考虑什么时候不合法,对于一条非树边 ,搜到 的时候如果 没被遍历那么就不行,搜到 后遍历 也不行,那么唯一的情况是 是 的祖先边。考虑这样做的道理,显然 在 MST 上走向 的那条边的边权小于 的边权,所以合法当且仅当树上 为祖先-儿子关系。
怎么做都可以。
F(二项式反演、DP)
再次感到了被 DP 和容斥支配的恐惧。
我开始想定义 表示 子树在 次操作之后只剩下根的方案数。转移即考虑合并两个集合序列。这样可以 ,然后就不知道怎么优化了。
发现可以通过二项式反演放宽一些限制。考虑对于这个塔结构,去除掉 的条件。那么假设原答案是 ,可以相等的条件是 ,那么通过钦定相等的位置可以得到 ,反演一下,问题就转化为了求 。
考虑合法的条件:若两个属于 不同子树的结点 都没有被删除,那么 也不会被删除,这等价于如果 被删除,那么子树只能留一个。这可以考虑定义 表示 子树在 次操作后被删空的方案数。因为一次删完是合法的,所以可以定义 表示 子树在 次操作后还有点的方案数。显然有 。
考虑怎么转移 ,分两种情况: 和所有结点一起删除, 在所有结点被删完之前就删完了,换句话说 在删除前是/不是一个二度点。对于第一种情况,只需要子树合法即可,那么:
可以做前缀和是因为我们后面容斥掉了。
对于第二种情况,枚举最后剩下的那棵子树和 被删除的时间点,有:
随便前缀和一下就 了。
回顾这个题,首先我们用二项式反演放宽了一个限制 ,然后紧扣删除时间点的性质定义了表示时间点 被删空代表的状态 ,从而得到了一个封闭转移。总之,容斥放宽限制的方法,切合条件定义状态的原则要时刻牢记。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话