题解 | #美丽的项链#

美丽的项链

https://ac.nowcoder.com/acm/problem/14735

知识点:分组背包,01背包 一共有n组,每组有物品的体积为l到r的物品,且每组物品有个r - l + 1个。对于一组中的某个物品,我们只能选和不选,则满足01背包条件。每个组只能由上一组的状态转移而来,符合题中n个组都选。定义状态 dp[i][j] 为 1~i 组中,体积为 j 的方案数,转移公式为 dp[i][j] += dp[i - 1][j - v]。

using namespace std;
#define int long long
const int mod = 1e9 + 7, N = 1e3 + 10;
int f[25][105];
signed main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int n, m; cin >> n >> m;
	f[0][0] = 1;
	for(int i = 1; i <= n; i ++)
	{
		int l, r; cin >> l >> r;
		for(int j = 0; j <= m; j ++)
		{
			for(int k = l; k <= r; k ++)
			{
				if(j >= k) f[i][j] += f[i - 1][j - k];
			}
		}
	}
	cout << f[n][m] << '\n';
}
全部评论

相关推荐

10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
牛客618272644号:佬携程工作怎么样,强度大吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务