NOI2021模拟测试赛(六十)

题面

西克

x → y x\to y xy 拆成 x → l c a → y x\to lca\to y xlcay,而 x → l c a x\to lca xlca 的部分很好搞,不予阐述。

关键是 y → l c a y\to lca ylca 的部分,我们考虑离线解决。从上往下走时,对每种颜色 c c c 维护一个点 r t c rt_c rtc,表示当前对于 c c c 的询问。每当走到 x x x 时,就把 r t a x rt_{a_x} rtax 的父亲指向 r t b x rt_{b_x} rtbx,并且把 r t a x rt_{a_x} rtax 设为一个新的点用于处理下面对 a x a_x ax 的询问。然后对于某个询问 ( x , y , l c a ) (x,y,lca) (x,y,lca)(假设 x → l c a x\to lca xlca 走出来是颜色 c c c),就在走到 l c a lca lca 时记录一下当前的 r t c rt_{c} rtc 记为 q r qr qr,然后走到 y y y 的时候询问一下 q r qr qr 的根所对应的颜色即可。

用可撤销并查集维护,时间复杂度 O ( ( n + q ) log ⁡ n ) O((n+q)\log n) O((n+q)logn)

尼特

只讲下面这个 DP 式子的生成函数怎么维护:
f i , j = { a f i − 1 , j + 1 + b f i − 1 , j + c f i − 1 , j − 1 j > 0 b f i − 1 , j + ( a + c ) f i − 1 , j + 1 j = 0 f_{i,j}= \begin{cases} af_{i-1,j+1}+bf_{i-1,j}+cf_{i-1,j-1} & j>0\\ bf_{i-1,j}+(a+c)f_{i-1,j+1} & j=0 \end{cases} fi,j={afi1,j+1+bfi1,j+cfi1,j1bfi1,j+(a+c)fi1,j+1j>0j=0
关键是 j = 0 j=0 j=0 时的特殊处理。

一个很巧妙的方法是我们设 F n ( x ) F_n(x) Fn(x) 为数列 { f n , n , f n , n − 1 , ⋯   , f n , 1 , f n , 0 , f n , 0 , f n , 1 , ⋯   , f n , n − 1 , f n , n } \{f_{n,n},f_{n,n-1},\cdots,f_{n,1},f_{n,0},f_{n,0},f_{n,1},\cdots,f_{n,n-1},f_{n,n}\} {fn,n,fn,n1,,fn,1,fn,0,fn,0,fn,1,,fn,n1,fn,n} 的生成函数,那么就有:
F n ( x ) = ( a + b x + c x 2 ) F n − 1 ( x ) = ( a + b x + c x 2 ) n \begin{aligned} F_n(x)&=(a+bx+cx^2)F_{n-1}(x)\\ &=(a+bx+cx^2)^n \end{aligned} Fn(x)=(a+bx+cx2)Fn1(x)=(a+bx+cx2)n

苯为

这种给图上的点染颜色、要求边的端点颜色不同的题目,一定要确定好染色的顺序。比如说这一题,先把环上的颜色染完,那么剩下的树形结构就可以从上往下递推,每个点可染的颜色都是 k − 1 k-1 k1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值