2022/2/24 思考。

今天的题目质量很高,至少我想写了!真是太好了。

CF1146F Leaf Partition

开始有个 dpi,0/1 表示点 i 是否加入了某个连通块……但是好像不太能做(实际上可以)就丢了。

还是考虑儿子和父亲之间的关系。定义 dpi,0/1 表示 i 跟父亲不在或在同一个连通块的方案数。考虑由儿子更新父亲。

如果 u 没有儿子表示要和父亲在同一连通块,那么 u 一定不会和父亲在同一个连通块;
如果 u 有一个儿子表示要和父亲在同一连通块,那么 u 一定会和父亲在同一个连通块,否则父亲会脱离那个唯一的儿子的连通块(此时在 u 的祖先有另一个子树内有一个点与 u 在同一个连通块);
否则,u 首先可以自成方圆,u 所在的连通块的所有点确定;或者是 u 把父亲并入同一个连通块,跟第二种情况无本质区别。

那么,记上面三种情况的方案数 g0,g1,g2,那么 dpu,0=g0+g2,dpu,1=g0+g2

g 是幼儿园 DP。

CF1140G Double Tree

首先显然看成一棵树然后两个状态,在某个点状态转变有代价。

注意到求树上的一条最短路径,首先在有状态转变的情况下我们不好搞,因为最短路径不一定是简单路径。我们需要松弛 uu 的权值。这个可以用两次 dfs 解决(因为 uu 的路径上状态最多转换一次。处理 i 时,你先通过以以 i 为根的子树内的某一点为转换点的权值松弛 ii,然后再通过上面的点松弛下面的点,正确性显然),不在话下。

然后就是大傻逼倍增题,写写就过了。

HNOI2014 世界树

写你妈,

我写了,就是纯傻逼。

posted @   SyadouHayami  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

My Castle Town.

点击右上角即可分享
微信分享提示