cf 0-1-Tree

Posted waldenlake

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf 0-1-Tree相关的知识,希望对你有一定的参考价值。

http://codeforces.com/contest/1156/problem/D

一棵树,边权只能为0或者1。一条简单路径就是类似01001100的样子。现要求简单路径中,0不能接在1后面。问其数量。

首先想到的是树形dp,哎,脑子里的工具或者类比问题太少了。

dp的机制:知道儿子树的所有答案,求当前树的答案。其实能做:增加了当前根之后,增加的路径就是通过了当前根的路径,它到儿子的路是1那么称这些儿子为1儿子,另外的是0儿子。那么0儿子间俩俩相乘再x2,1儿子间也是,然后0儿子和1儿子间彼此相乘但是不x2。可是还有以这个根为端点的呢?这个就难搞了,总之很复杂?

复杂,可是自己也不知道最终算法是这个的简化版本还是另辟蹊径对不?

换一个机制:全0路径和全1路径容易求得。现在求01路径:01路径必有一个中轴点从0到1。那么对于一个点来说,它通向的所有0点都能作为起点,它联通的所有1点都能做终点。于是有了一个有意思的问题,边有值0或者1,点没有值,怎么搞?自己纠结一会。

对一个既有0边又有1边的点,它是什么性质?反正不看答案我很难想到怎么解。

答案是0边1边分开考虑,只考虑0边,然后构建了一些连通子图,1边也是。然后0和1之间是有交集的,交集就是那些既有0边又有1边的点,但是他们已经两个世界了。

那么对于一个点来说,它所在的0边连通子图和1边连通子图之间相乘就是最终答案了!

我服!

 

以上是关于cf 0-1-Tree的主要内容,如果未能解决你的问题,请参考以下文章

[CF930E]/[CF944G]Coins Exhibition

CF怎么改名

dp专题

Codeforces | CF1028C Rectangles

Codeforces 刷题记录

打CF,学算法——二星级CF 520B Two Buttons