• 2022/2/24 思考。


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

    CF1146F Leaf Partition

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

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

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

    那么,记上面三种情况的方案数 \(g_0,g_1,g_2\),那么 \(dp_{u,0}=g_0+g_2,dp_{u,1}=g_0+g_2\)

    \(g\) 是幼儿园 DP。

    CF1140G Double Tree

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

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

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

    HNOI2014 世界树

    写你妈,

    我写了,就是纯傻逼。

  • 相关阅读:
    研究生第二学期总结
    Android应用开发EditText文本内容变化监听方法
    Android 自定义动画 Loading
    UML建模之活动图介绍(Activity Diagram)
    UML学习(二)-----类图
    UML系列图--用例图
    Lesson9 some interesting things in C#
    Lesson10 Fianl and fellings
    Lesson 7: C#多线程
    浅谈android Socket 通信及自建ServerSocket服务端常见问题
  • 原文地址:https://www.cnblogs.com/amagaisite/p/15933644.html
Copyright © 2020-2023  润新知