其他分享
首页 > 其他分享> > BZOJ 1677. [Usaco2005 Jan]Sumsets 求和

BZOJ 1677. [Usaco2005 Jan]Sumsets 求和

作者:互联网

传送门

可以直接完全背包,复杂度 $O(nlog_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]$

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

标签:方案,偶数,除以,最小,......,Jan,大于,1677,Sumsets
来源: https://www.cnblogs.com/LLTYYC/p/11320682.html