BZOJ 1677. [Usaco2005 Jan]Sumsets 求和

传送门

可以直接完全背包,复杂度 $O(n \log n)$

考虑另一种比较神仙的做法

设 $f[i]$ 表示相加为 $i$ 的方案数

考虑某个方案中加的最小的数

当 $i$ 为奇数时,显然加的最小的数一定为 $1$,则 $f[i]=f[i-1]$

当 $i$ 为偶数时,把加的最小的数分为 $1$ 和大于 $1$,$1$ 的贡献同样是 $f[i-1]$

如果加的最小的数大于 $1$,又因为加的数都是 $2$ 的幂次,说明加的数都是偶数,则把加的数全部除以 $2$ 的方案同样合法

发现除以 $2$ 后的每个方案恰好对应 $f[i/2]$ 的每个方案

所以 $f[i]=f[i-1]+f[i/2]$

代码就不用了吧......

转载于:https://www.cnblogs.com/LLTYYC/p/11320682.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值