2018.10.17【校内模拟】管道(状压DP)

传送门(内网)


解析:

简直有毒,出题人还一本正经的说:“我觉得没有去年 N O I P D 2 T 2 NOIPD2T2 NOIPD2T2难啊”

我只想说,去年 D 2 T 2 D2T2 D2T2的转移方程那里有这么鬼畜。。。

思路:

首先利用两个数组 f , d p f\text{,}dp fdp来进行状态转移。
定义如下 f i , s t a f_{i,sta} fi,sta表示不向点 i i i之前的点(即 s t a sta sta中的点)回溯,当前点在 i i i,能够向后 D F S DFS DFS补全的集合,这个显然存在递推关系,可以 D F S DFS DFS解决。

然后就直接随便写了一个记搜。。。

d p i , s t a dp_{i,sta} dpi,sta表示当前在点 i i i,已经通过的点的集合为 s t a sta sta,继续 D F S DFS DFS的方案数。

然后直接上状态转移方程: d p i , s t a = ∑ j d p j , s t a ∣ ( 1 &lt; &lt; j ) × d p i , s t a ∣ f j , s t a dp_{i,sta}=\sum_jdp_{j,sta|(1&lt;&lt;j)}\times dp_{i,sta|f_{j,sta}} dpi,sta=jdpj,sta(1<<j)×dpi,stafj,sta
粗略解释一下就是,先遍历 j j j和回溯后遍历 i i i的其他子树,根据乘法原理,这种方法的贡献就是两者的乘积。

code(内网)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值