2022/2/24 思考。
今天的题目质量很高,至少我想写了!真是太好了。
CF1146F Leaf Partition
开始有个 表示点 是否加入了某个连通块……但是好像不太能做(实际上可以)就丢了。
还是考虑儿子和父亲之间的关系。定义 表示 跟父亲不在或在同一个连通块的方案数。考虑由儿子更新父亲。
如果 没有儿子表示要和父亲在同一连通块,那么 一定不会和父亲在同一个连通块;
如果 有一个儿子表示要和父亲在同一连通块,那么 一定会和父亲在同一个连通块,否则父亲会脱离那个唯一的儿子的连通块(此时在 的祖先有另一个子树内有一个点与 在同一个连通块);
否则, 首先可以自成方圆, 所在的连通块的所有点确定;或者是 把父亲并入同一个连通块,跟第二种情况无本质区别。
那么,记上面三种情况的方案数 ,那么 。
算 是幼儿园 DP。
CF1140G Double Tree
首先显然看成一棵树然后两个状态,在某个点状态转变有代价。
注意到求树上的一条最短路径,首先在有状态转变的情况下我们不好搞,因为最短路径不一定是简单路径。我们需要松弛 的权值。这个可以用两次 dfs 解决(因为 的路径上状态最多转换一次。处理 时,你先通过以以 为根的子树内的某一点为转换点的权值松弛 ,然后再通过上面的点松弛下面的点,正确性显然),不在话下。
然后就是大傻逼倍增题,写写就过了。
HNOI2014 世界树
写你妈,
我写了,就是纯傻逼。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通