首页 > 其他分享 >01背包变种

01背包变种

时间:2023-03-01 23:35:21浏览次数:32  
标签:件物品 变种 int 01 include 背包 dp

[acwing]1047.糖果

/*
    dp[i][j] 表示只考虑前 i 件物品,模 k 余 j 的最大价值
    
    如果不取第 i 件物品,dp[i][j] = dp[i - 1][j]
    如果取第 i 件物品,dp[i][j] = dp[i - 1][((j - v[i]) % k + k) % k] + v[i]
    
    遍历顺序 i[1, n],j[0, k - 1]
    
    无需初始化
    
    dp[n][0]
*/
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 110;

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

int main()
{
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= n; i++) scanf("%d", &v[i]);
    
    for (int i = 1; i <= n; i++)
        for (int j = 0; j <= k - 1; j++) {
            dp[i][j] = dp[i - 1][j]; // 不取第 i 个物品
            if (dp[i - 1][((j - v[i]) % k + k) % k] != 0) // 取第 i 个物品,看之前有没有值与 v[i] 相加模 k 等于 j
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][((j - v[i]) % k + k) % k] + v[i]);
            else if (v[i] % k == j) // 如果找不到,说明不能在原来的基础上进一步增大,再判断只有 v[i] 自身能否满足模 k 等于 j
                dp[i][j] += v[i];
        }
        
    printf("%d", dp[n][0]);
    
    return 0;
}

标签:件物品,变种,int,01,include,背包,dp
From: https://www.cnblogs.com/cong0221/p/17170336.html

相关文章

  • 全球土地利用数据ESRI 10m Annual Land Use Land Cover (2017-2021)介绍及下载
    ESRILandCover10m(2017-2021)土地利用数据介绍及下载数据介绍参考链接:https://livingatlas.arcgis.com/landcover/https://gee-community-catalog.org/projects/e......
  • P3205 [HNOI2010]合唱队(区间dp+方案数)
    P3205[HNOI2010]合唱队-洛谷|计算机科学教育新生态(luogu.com.cn)这道题大区间包括小区间,每加一个人都会让区间更大;考虑区间DP:对于区间[i~j],这段区间最新......
  • Django-day01
    Django-day01创建Django工程django-adminstartproject工程名创建APPcd工程名pythonmanage.pystartappcmdb配置静态文件project.settings.pySTATICFILE......
  • 2022/03/01刷题
    B.PrinzessinderVerurteilung链接B.PrinzessinderVerurteilung直接暴力枚举所有情况,可以发现最多最多枚举到3个字符就可以通过#include<iostream>#include<a......
  • Day01
    Markdowen学习标题:二级标题字体HelloWorld?HelloWorld?HelloWorld?HelloWorld?l两边波浪号引用选择狂神说Jawa分割线图片超链[dianjitiaozhuan](博客园......
  • 2018GPLT (天梯赛训练03-01)
    2018GPLT (天梯赛训练03-01)1.天梯赛座位分配这题在网上都没找到篇靠谱的解答很多都是错的(可能但凡会点编程的人都不会被这题卡住了吧)(悲)从我的好朋友毛的程序我觉得......
  • 3月01日课后总结
    3/01课后总结装饰器装饰器简易版本defouter(func_name):#func_name=indexdefget_time():#1.在函数执行之前,要记录一下此时的时间sta......
  • 完全背包求方案数
    [acwing]1023.小明买书/* dp[i][j]表示只考虑前i个物品,其价值恰好为j的方案个数 dp[i][j]可从选多少个第i个物品推导出来,假设最多能选s个 如果选0个第i......
  • day01(2023.3.1)
    1、了解了Java运行机制jdk和jre和jvm的区别 2、下载安装jdk然后配置环境变量 并验证是否成功(1)百度收搜Jdk8(推荐),找到下载地址。(2)同意协议,下载电脑对应的版本。......
  • C语言员工信息管理系统[2023-03-01]
    C语言员工信息管理系统[2023-03-01]物联网工程专业程序设计基础课程设计员工信息管理系统学院(系):信息与通信工程学院专业:物联网工程学生姓名:学......