USACO 2.2.2 集合 Subset Sums

博客介绍了如何使用动态规划解决USACO中的集合Subset Sums问题,将其转化为01背包问题,讨论了求方案数的递推式,并提到了01背包的不同提问类型及其递推式的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题解

仔细想一想就会发现这是一道dp,还是01背包类型的,是求方案数的。
看似是把数列分组,但是可视作把 N 个 重量分别为 1-N 的物体放入总重一定的背包中,且刚好放完的方案数计算。
递推式不难得出:
f[i+1][j] = f[i][j]           if ( i > j)
            = f[i][j]+f[i][j-i]

ps : 01pack中有很多不同的提问,比如求方案,最少物品数等等,递推式都会略有变化。


代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值