P3349 [ZJOI2016]小星星

P3349 [ZJOI2016]小星星

对于子集\(DP\)的优化一般要上容斥。

如果只是暴力枚举当前点以及子集状态的话一共要\(O(3^n)\),而容斥后可以优化成\(O(n*2^n)\)

一般容斥都是把条件改成“至多”“至少”如何如何,这样我们枚举状态,然后\(DP\)中就不需要记录子集了。

就是考虑从最原始的暴力\(DP\)\(f[i][j][S]\)表示在树中\(i\)节点表示原图的\(j\),且子树状态为\(S\)的方案数。转移需要\(O(n^3*3^n)\)

考虑容斥将条件变成至多,那我们先枚举已用点的状态,然后设\(f[i][j]\)表示当前点\(i\)表示原图的\(j\)的方案数,\(O(n^3*2^n)\)即可求解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值