4.1.2 到底在规划、设计什么

sql知识总结

  返回  

【hdu 7085】Pty loves SegmentTree (推式子)

2021/8/20 12:09:14 浏览:

题目链接

题目大意

一棵线段树,分割点任选,每个节点有1个权值。规定:

  • 叶节点权值为1
  • 右子树线段长度恰好为 k k k 的节点权值为 A A A
  • 其他节点权值为 B B B

定义线段树的权值为所有节点权值之积。
定义 f n f_n fn 为区间 [ 1 , n ] [1,n] [1,n] 所有可能的线段树的权值和。
给定 k , A , B k,A,B k,A,B,多组询问,每次问 ∑ i = L R f i 2 \sum_{i=L}^Rf_i^2 i=LRfi2 的值( L , R ≤ 1 0 7 L,R\le 10^7 L,R107)。

思路

其实就是要在 O ( n ) O(n) O(n) 的时间内求出 f 1 ∼ f n f_1\sim f_n f1fn 的值。
首先不难写出递推式
f n = ( A − B ) f k f n − k + B ∑ i = 1 n − 1 f i f n − i ( i ≥ 2 ) f_n=(A-B)f_kf_{n-k}+B\sum_{i=1}^{n-1}f_if_{n-i} (i\ge 2) fn=(AB)fkfnk+Bi=1n1fifni(i2)
f 1 = 1 f_1=1 f1=1
定义
F ( x ) = ∑ i = 1 ∞ f i x i F(x)=\sum_{i=1}^\infty f_ix^i F(x)=i=1fixi

F = ( A − B ) f k x k F + B F 2 + x F=(A-B)f_kx^kF+BF^2+x F=(AB)fkxkF+BF2+x
解得
F = − ( ( A − B ) f k x k − 1 ) − ( ( A − B ) f k x k − 1 ) 2 − 4 B x 2 B F=\frac{-((A-B)f_kx^k-1)-\sqrt{((A-B)f_kx^k-1)^2-4Bx}}{2B} F=2B((AB)fkxk1)((AB)fkxk1)24Bx

代码

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号