[CF750G]New Year and Binary Tree Paths

Posted StaroForgin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF750G]New Year and Binary Tree Paths相关的知识,希望对你有一定的参考价值。

New Year and Binary Tree Paths

题解

很显然,路径分单链与非单链两种情况,我们可以分别考虑两者。

对于单链:

我们考虑一个长度为 h h h的链从点 x x x出发全部往左儿子走回的编号和, ∑ i = 0 h − 1 2 i x = ( 2 h − 1 ) x \\sum_{i=0}^{h-1}2^ix=(2^h-1)x i=0h12ix=(2h1)x
如果我们在链上高度为 y y y的地方向右儿子走,那么总的贡献会增加 ∑ i = 0 y − 1 2 i = 2 y − 1 \\sum_{i=0}^{y-1}2^i= 2^{y}-1 i=0y12i=2y1
我们设序列 t t t表示点 x x x在整个过程中在什么位置会向左儿子走,那么从点 x x x出发的长度为 h h h的链的总贡献为 ∑ i = 0 h − 1 2 i x + ∑ i = 0 h − 1 t i ( 2 i − 1 ) ⩽ ( 2 h − 1 ) x + 2 h − h < ( 2 h − 1 ) ( x + 1 ) \\sum_{i=0}^{h-1}2^ix+\\sum_{i=0}^{h-1}t_{i}(2^i-1)\\leqslant (2^h-1)x+2^{h}-h<(2^h-1)(x+1) i=0h12ix+i=0h1ti(2i1)(2h1)x+2hh<(2h1)(x+1)
所以对于不同的 h h h,我们的起始点 x x x是与之一一对应的, x = ⌊ s 2 h − 1 ⌋ x=\\left \\lfloor\\frac{s}{2^h-1}\\right\\rfloor x=2h1s

我们只需要判断从当前的 x x x出发,能否走到一个点使得编号总和为 s s s。也就相当于我们用不同的 2 i − 1 2^i-1 2i1能否组合出 s − ( 2 h − 1 ) x s-(2^h-1)x s(2h1)x
由于 2 i − 1 > ∑ j = 0 i − 1 ( 2 j − 1 ) = 2 i − i 2^i-1>\\sum_{j=0}^{i-1}(2^j-1)=2^{i}-i 2i1>j=0i1(2j1)=2ii,所以我们可以用贪心的方法判断,如果 t t t不小于当前的 2 i − 1 2^i-1 2i1,就将它减去,看最后能否去到 0 0 0

对于其它任意路径

显然,我们可以将它转化成一个点延申出两条单链的形式。
我们设点 x x x延申出的两条单链长度分别为 h 1 h_1 h1 h 2 h_2 h2,全向左儿子走,那我们的和就为 ( 2 h 1 + 2 h 2 − 3 ) x + 2 h 2 − 1 − 1 (2^{h_1}+2^{h_2}-3)x+2^{h_2-1}-1 (2h1+2h23)x+2h211
同样,对于固定的 ( h 1 , h 2 ) (h_1,h_2) (h1,h2)来说,点 x x x也是固定的。
我们只需要判断我们的 ∑ i = 0 h 1 − 2 t 1 , i ( 2 i − 1 ) + ∑ i = 0 h 2 t 2 , i ( 2 i − 1 ) \\sum_{i=0}^{h_1-2} t_{1,i}(2^{i}-1)+\\sum_{i=0}^{h_2}t_{2,i}(2^i-1) i=0h12t1,i(2i1)+i=0h2t2,i(2i1)能否构造出 s − ( 2 h 1 + 2 h 2 − 3 ) x − 2 h 2 − 1 + 1 s-(2^{h_1}+2^{h_2}-3)x-2^{h_2-1}+1 s(2h1+2h23)x2h21+1即可。

但显然,如果全是 2 i − 1 2^i-1 2i1的形式的话,我们是并不好维护的,我们可以枚举选择了多少个 2 i − 1 2^{i}-1 2i1,如果选择了 n n n个,就将我们的 s s s加上 n n n,之后就只用看每个 2 i 2^i 2i选择了几个就行了。
这一块可以对于二进制位数位 d p dp dp来维护。
我们定义 d p i , j , S dp_{i,j,S} dpi,j,S表示前 i i i位选择了 j j j 2 2 <

以上是关于[CF750G]New Year and Binary Tree Paths的主要内容,如果未能解决你的问题,请参考以下文章

性质分析+数位DPCF750G New Year and Binary Tree Paths

CF 750C New Year and Rating(思维题)

cf723a The New Year: Meeting Friends

CF140C New Year Snowmen

CF620E. New Year Tree

CF 500 C New Year Book Reading