SSL-OI夏日合宿 杂题 LOJ#6089小Y的背包计数问题 根号分治

LOJ 6089 这题是集训第一天晚上的杂题, 由于本人本性爱咕, 所以集训第二周才来补题解. 前置知识 [多重背包]https://www.luogu.com.cn/problem/P1776: 用单调队列优化, 做到ONMONM的复杂度. [数的划分]https://www.luogu.com.cn/problem/P1025: nn个整数由kk个整数组成的方案数可重/不可重, ONKONK复杂度DP. 题意 背包大小为nn, 物

LOJ #6089

这题是集训第一天晚上的杂题, 由于本人本性爱咕, 所以集训第二周才来补题解.

前置知识

多重背包: 用单调队列优化, 做到O(NM)O(NM)的复杂度.

数的划分: nn个整数由kk个整数组成的方案数(可重/不可重), O(NK)O(NK)复杂度DP.

题意

背包大小为nn, 物品数量为nn, 第ii个物品的重量为ii, 数量为ii.

问: 将背包装满的方案数是多少?

正解

对于大于N\sqrt{N}的物品, 相当于没有数量限制. 我们用数的划分(可重方式)求出答案就好.

对于小于N\sqrt{N}的物品, 我们用多重背包求出答案. 由于物品数量是N\sqrt{N}, 背包大小是NN, 所以复杂度为O(NN)O(N\sqrt{N}).

评论

0

还没有评论。