当前位置: 首页 > article >正文

糖果(安师大)

转移方程

转移方程的核心思想是 选择和不选择当前物品 两种情况的比较。具体来说:

不选择当前物品

  • 如果不选择第 i 个物品,那么 dp(i, j) 就等于 dp(i-1, j),即前 i-1 个物品中,满足 总价值 % k == j 的最大和。

选择当前物品

  • 如果选择第 i 个物品,那么就要计算 dp(i-1, (j - w[i]) % k),即前 i-1 个物品中,选择的物品总价值 S 满足 S % k = (j - w[i]) % k,然后加上当前物品的价值 w[i]
  • 注意:为了保证取模后的结果在 [0, k-1] 范围内,需要进行 ((j - w[i]) % k + k) % k 这样的操作,确保负数取模后变为正数。
  • #include<bits/stdc++.h>
    using namespace std;
    const int N=1e2+10;
    int a[N],f[N][N];
    int main ()
    {
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<N;j++)
            {
                f[i][j]=INT_MIN;
            }
            
        }
        f[0][0]=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<m;j++)
            {
                f[i][j]=max(f[i-1][j],f[i-1][((j-a[i])%m+m)%m]+a[i]);
            }
        }
        cout<<f[n][0]<<endl;
        return 0;
    }

http://www.kler.cn/a/533329.html

相关文章:

  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(一)
  • 基于Springboot框架的学术期刊遴选服务-项目演示
  • 安全策略实验报告
  • 交叉验证、精确率、召回率
  • MongoDb user自定义 role 添加 action(collStats, EstimateDocumentCount)
  • 鲸鱼算法 matlab pso
  • vscode技巧总结
  • go语言中的Stringer的使用
  • 【工具变量】中国省级八批自由贸易试验区设立及自贸区设立数据(2024-2009年)
  • JSON常用的工具方法
  • 家政预约小程序12服务详情
  • 如何自定义软件安装路径及Scoop包管理器使用全攻略
  • 互联网医院开发|互联网医院成品|互联网医院系统定制
  • Java进阶总结——集合
  • 基于ESP32的桌面小屏幕实战[7]:第一个工程Hello world!以及打印日志
  • 微服务——配置管理
  • DeepSeek大模型指定github项目版本安装环境
  • Java 进阶day14XML Dom4j 工厂模式 Base64
  • leetcode62.不同路径
  • 【Block总结】CFBlock,对齐CNN和Transformer特征|即插即用
  • 【含开题报告+文档+PPT+源码】基于Spring Boot的剧院购票平台的设计与实现
  • Windows图形界面(GUI)-QT-C/C++ - QT MDI Area
  • 优选算法《前缀和》
  • PG vs MySQL 统计信息收集的异同
  • Python 操作列表(元组)
  • C++ Primer 表达式基础