美文网首页动态规划专题
背包问题求方案数

背包问题求方案数

作者: Tsukinousag | 来源:发表于2021-03-18 19:33 被阅读0次

原题链接

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N=1010;
const int MOD=1e9+7;

int dp[N],g[N];
int n,v;

int main()
{
    cin>>n>>v;
    dp[0]=0;
    g[0]=1;
    
    for(int i=0;i<n;i++)
    {
        int vi,wi;
        cin>>vi>>wi;
        for(int j=v;j>=vi;j--)
        {
            int cnt=0;
            int ans=max(dp[j],dp[j-vi]+wi);
            if(dp[j]==ans)  cnt+=g[j];
            if(dp[j-vi]+wi==ans)    cnt+=g[j-vi];
            g[j]=cnt%MOD;
            dp[j]=ans;
        }
    }
    
    int ans=0;
    for(int i=0;i<=v;i++)
    {
        ans=max(ans,dp[i]);
    }
    int cnt=0;
    for(int i=0;i<=v;i++)
    {
        if(dp[i]==ans)
            cnt=(cnt+g[i])%MOD;
    }
    printf("%d\n",cnt);
    return 0;
}

相关文章

  • 背包问题求方案数

    原题链接[https://www.acwing.com/problem/content/11/]

  • 背包问题求具体方案

    原题链接[https://www.acwing.com/problem/content/12/]

  • 第24章 背包问题进阶

    1、整数划分 算法1 完全背包求方案数问题 时间复杂度 Java 代码 算法2 时间复杂度 Java 代码 2、猫...

  • LeetCode 149 周赛

    1. 题目列表 一年中的第几天(简单) 投掷骰子的N种方法(背包问题求方案数) 单字符重复子串的最大长度 子数组种...

  • DP相关

    1.0-1背包求方案数题目描述:对于由从1到N (1 <= N <= 39)这N个连续的整数组成的集合来说,我们有...

  • 回溯与背包

    回溯结果 背包结果 可以看到,其实两种做法的结果(方案数,方案内容)是相同的只是背包的结果总是更"守序" 回溯和背...

  • 《背包九讲》笔记

    背包问题 题意:给出背包的容量,以及一批物品的价值和大小,求最大价值。 01背包问题 题意 每个物品只能放入一次。...

  • 彻底理解0-1背包问题

    0-1背包问题概念 背包问题本质是个求最优解的问题:有个背包有V大小的空间可以存放物品,现在有n个物品,每个物品体...

  • 背包问题1(01背包)

    N件物品,没见有重量Wi,价值Vi;选其中几件放入容量为M的背包中,求价值的最值。——经典背包问题背包问题分三类:...

  • week 16

    动态规划和背包问题理解 背包问题的理解 背包问题:物品有两个属性:重量和价值,即一个是增益,一个是获取限制,求利益...

网友评论

    本文标题:背包问题求方案数

    本文链接:https://www.haomeiwen.com/subject/fzzjcltx.html