首页 > 其他分享 >背包问题的一些模板

背包问题的一些模板

时间:2023-08-07 21:46:41浏览次数:33  
标签:背包 int max -- amount 一些 模板

01背包问题:

无优化

for(int i=1;i<=n;i++)
{
    for(int c=0;c<=m;c++)
    {
        f[i][c]=f[i-1][c];
        if(c>=w[i])
        f[i][c]=max(f[i][c],f[i-1][c-w[i]]+v[i]);
    }
}

一维数组优化:

for(int i=1;i<=n;i++)
{
    for(int c=m;c>=0;c--)
    {
        if(c>=w[i])
        f[c]=max(f[c],f[c-w[i]]+v[i]);
    }
}

更进一步的常数优化:

for(int i=1;i<=n;i++)
{
    sumw+=w[i];
    bound=max(m-sumw,w[i]);
    for(int c=m;c>=bound;c--)
    {
        if(c>=w[i])
        f[c]=max(f[c],f[c-w[i]]+v[i]);
    }
}

完全背包问题:

for(int i=1;i<=n;i++)
{
    for(int c=0;c<=m;c++)
    {
        if(c>=w[i])
        f[c]=max(f[c],f[c-w[i]]+v[i]);
    }
}

多重背包问题:

for(int i=1;i<=n;i++)
{
    if(w[i]*a[i]>m)
    {
        for(int c=0;c<=m;c++)
        {
        if(c>=w[i])
        f[c]=max(f[c],f[c-w[i]]+v[i]);
        }
    }
    else
    {
         k=1;amount=a[i];
         while(k<amount)
         {
             for(int c=k*w[i];c>=0;c--)
             {
                 if(c>=w[i])
                 f[c]=max(f[c],f[c-w[i]]+k*v[i]);
             }
             amount-=k;
             k<<=1;
         }  
         for(int c=amount*w[i];c>=0;c--)
         {
             f[c]=max(f[c],f[c-w[i]]+amount*v[i]);
         }
    } 
}

标签:背包,int,max,--,amount,一些,模板
From: https://www.cnblogs.com/chiyun010/p/17612790.html

相关文章

  • 6模板语法
    创建一个vue3项目npminitvue@latest启动cdvue-demonpminstallnpmrundev修改App.vue这时候打开时空白再修改<template>{{msg}}</template><script>exportdefault{data(){return{msg:"神奇的语法"}}}</script>......
  • Go / Golang JSON 一些心得
    自定义序列化和反序列化可以实现json.Marshaler和json.Unmarshaler自定义json的序列化和反序列化typeTags[]stringfunc(tTags)MarshalJSON()([]byte,error){return[]byte(strconv.Quote(strings.Join(t,","))),nil}func(t*Tags)UnmarshalJSON(b[]b......
  • django模板使用的总结(2)
    项目模板使用分析模板总结1,主要讲了一些原理和使用方法。现在开始在项目上进行实操分析。我们的博客主要有:网站首页、文章分类列表页、搜索列表页、标签列表页、文章内容展示页、单页面(联系我们)。其中,文章分类列表页、搜索列表页、标签列表页这三个页面展示结构都一样我们只需要......
  • Django 模板table 自增序号列
    第一种方法:<styletype="text/css">table{counter-reset:tableCount;}.counterCell:before{content:counter(tableCount);counter-increment:tableCount;}</style>标签中使用<table><tr><......
  • django模板使用的总结
    一、静态资源的引入方式1.在项目根目录下创建static文件夹。2.settings.py中配置环境变量,方便程序可以识别此路径。要在STATIC_URL='/static/'下边添加下面代码STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),]或STATICFILES_DIRS=os.path.join(BAS......
  • springboot智能3D导诊系统源码,基于规则模板的开发原理
    互联网智慧3D导诊系统源码通过智能导诊,进行自助问询及挂号服务,减轻导诊台护士压力,挂号更加方便快捷。技术架构:springboot+redis+mybatisplus+mysql+RocketMQ  智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建......
  • 一些DP
    P1273有线电视网树上背包的变形\[f_{u,j+k}=\max_{v\inson(u)}f_{u,j}+f_{v,k}-w_{u,v}\]这里写成\(j+k\)是为了和代码一致。\(f_{u,j+k}\) 代表以\(u\)为根的子树中,选择了\(j+k\)个叶子结点的利润最大值。\(w_{u,v}\)代表\(u\)到\(v\)的......
  • Linux 相关,个人整理的一些零碎笔记 2021-12-13
    df-lh接下来的四个字段Size、Used、Avail、及Use%分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比du命令:查询文件或文件夹的磁盘使用空间如果当前目录下文件和文件夹很多使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是......
  • 前端 Vue 应该知道的一些东西,个人笔记 2021-11-26
    前端代码编写规范及es6常用语法命名规范文件夹名称,文件名称,组件名称,统一使用大驼峰或者小横线方式命名;组件文件名:list-item.vue.或者ListItem.vue;基础的无状态的通用组件加VBaseApp前缀BaseButtonAppButton在html中<base-button>或者<BaseButton>url路径名:小......
  • 代码填充模板-膜拜神器
    { //Placeyoursnippetsforcpphere.Eachsnippetisdefinedunderasnippetnameandhasaprefix,bodyand //description.Theprefixiswhatisusedtotriggerthesnippetandthebodywillbeexpandedandinserted.Possiblevariablesare: //$1,......