首页 > 其他分享 >【多重背包】Atcoder Beginner Contest 286----D

【多重背包】Atcoder Beginner Contest 286----D

时间:2023-01-24 22:22:24浏览次数:66  
标签:背包 Beginner Contest int 每组 long ---- 枚举 dp

题目:D - Money in Hand (atcoder.jp)

分析:经典的多重背包。用dp[i]表示i能否正好凑出。先复习一下多重背包。

多重背包就是有N组物品,每组最多有k个,每组可以选多个。分组背包和多重背包类似,分组背包也是有N组,每组有K个,但分组背包中每组最多只能选一个。

对于多重背包,先枚举物品,然后枚举体积(一维倒序),然后在枚举每组选择的个数。

对于分组背包,先枚举物品,然后枚举体积(一维倒序),然后再枚举每组中选择哪个。

代码:

#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define ll long long
#define endl '\n'
using namespace std;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int, int> pll;
typedef unsigned long long ULL;
const ll mod = 998244353;
const int N = 2e5 + 5;
int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}
int cmp(int a, int b)
{
    return a > b;
}

int a[N];
map<int,int>mp;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int n,x;
    int a[55],b[55];
    cin>>n>>x;
    for(int i=1;i<=n;i++) cin>>a[i]>>b[i];
    int dp[10005];
    memset(dp,0,sizeof(dp));
    dp[0]=1;
    for(int i=1;i<=n;i++)
    {
        for(int j=x;j>=0;j--)
        {
            for(int k=0;k<=b[i];k++)
            {
                if(j>=k*a[i]&&dp[j-k*a[i]]) dp[j]=1;
            }
        }
    }
    if(dp[x]) cout<<"Yes";
    else cout<<"No";
    return 0;
}

  

标签:背包,Beginner,Contest,int,每组,long,----,枚举,dp
From: https://www.cnblogs.com/hhhhy0420/p/17066454.html

相关文章

  • jq,getUrlParma乱码问题
    自定义getURLParma方法即可functiongetUrlParam(name){//用该属性获取页面URL地址从问号(?)开始的URL(查询部分)varurl=window.location.search;//正则筛选地......
  • .net core(.net 6) Filter的生效范围
    1、方法上注册---当前方法生效  2、控制器注册---当前控制器生效  3、全局注册---全局生效builder.Services.AddControllers(options=>{......
  • 【ARIXV2209】Multi-Scale Attention Network for Single Image Super-Resolution
    【ARIXV2209】Multi-ScaleAttentionNetworkforSingleImageSuper-Resolution代码:https://github.com/icandle/MAN这是来自南开大学的工作,将多尺度机制与大核注意机......
  • 每日食词—day107
    middleadj. n. v.中间、中层、中段、中级的compactadj. n. v.压缩、紧密、紧凑abbreviatev.缩写、简写、缩短、简化、省略qualifiedadj. v.有资格的、......
  • Java:枚举类型
    Java:枚举类型每博一文案师父说:人活一世,每个人都有他的特别,每个人都值得被温柔相待。红尘一遭,每段经历都有它的必然,每段经历都造就了现在的你,最快乐的事情,就是做自己,最......
  • Composer 镜像原理 (1) —— 初识 Composer
    相关文章Composer镜像原理(1)——初识ComposerComposer镜像原理(2)——composer.jsonComposer镜像原理(3)——完结篇何为ComposerComposer是PHP的......
  • 刷刷刷 Day 20 | 98. 验证二叉搜索树
    98.验证二叉搜索树LeetCode题目要求给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数......
  • IActionFilter和IResoursceFilter区别和优劣
    为什么IResoursceFilter更适合做缓存?IActionFilter:只包裹Action方法IResoursceFilter:包裹控制器的构造示例+Action方法IResoursceFilter更适合做缓存,效率更高。因为IRes......
  • 【整理】swagger2注解说明
    @Api@Api:用在请求的类上,表示对类的说明tags="说明该类的作用,可以在UI界面上看到的注解"value="该参数没什么意义,在UI界面上也看到,所以不需要配置"@Api......
  • 集合
    集合进阶(一)泛型统一数据类型避免强制类型转换带来的异常如果不写泛型,默认为Object1.泛型类当一个类的变量数据类型不确定时修饰符class类名<类型>{}pu......