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

C++动态规划-01背包

采药

#include <bits/stdc++.h>
using namespace std;
int t,m;//T:总时间 m:物品数数量
int dp[1005];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t>>m;for(int i=1; i<=m; i++){int w,v;cin>>w>>v;for(int j=t; j>=w; j--) dp[j]=max(dp[j],dp[j-w]+v);}cout<<dp[t];return 0;
}

#include <bits/stdc++.h>
using namespace std;
int t,m;//T:总时间 m:物品数数量
int dp[1005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>t>>m;
    for(int i=1; i<=m; i++)
    {
        int w,v;
        cin>>w>>v;
        for(int j=t; j>=w; j--) dp[j]=max(dp[j],dp[j-w]+v);
    }
    cout<<dp[t];
    return 0;
}
开心的金明

#include <bits/stdc++.h>
using namespace std;
int t,m;
int dp[100005];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>t>>m;for(int i=1; i<=m; i++){int money,zh;cin>>money>>zh;int w=money,v=money*zh;for(int j=t; j>=w; j--) dp[j]=max(dp[j],dp[j-w]+v);}cout<<dp[t];return 0;
}

#include <bits/stdc++.h>
using namespace std;
int t,m;
int dp[100005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>t>>m;
    for(int i=1; i<=m; i++)
    {
        int money,zh;
        cin>>money>>zh;
        int w=money,v=money*zh;
        for(int j=t; j>=w; j--) dp[j]=max(dp[j],dp[j-w]+v);
    }
    cout<<dp[t];
    return 0;
}
花园采药

#include <bits/stdc++.h>
using namespace std;
int T;
int n,m;
int dp[10005];
int v[205],w[205];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>T;for(int k=1; k<=T; k++){cin>>n>>m;memset(dp,0,sizeof(dp));for(int i=1; i<=n; i++) cin>>v[i];for(int i=1; i<=n; i++){cin>>w[i];for(int j=m; j>=w[i]; j--) dp[j]=max(dp[j],dp[j-w[i]]+v[i]);}//for(int i=1; i<=m; i++) cout<<dp[i]<<" ";//cout<<'\n'; cout<<dp[m]<<'\n';}return 0;
}
/*
2
5 10
1 2 3 4 5
5 4 3 2 1
5 10
1 2 3 4 5
5 1 5 4 3*/

#include <bits/stdc++.h>
using namespace std;
int T;
int n,m;
int dp[10005];
int v[205],w[205];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>T;
    for(int k=1; k<=T; k++)
    {
        cin>>n>>m;
        memset(dp,0,sizeof(dp));
        for(int i=1; i<=n; i++) cin>>v[i];
        for(int i=1; i<=n; i++)
        {
            cin>>w[i];
            for(int j=m; j>=w[i]; j--) dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
        }
        //for(int i=1; i<=m; i++) cout<<dp[i]<<" ";
        //cout<<'\n'; 
        cout<<dp[m]<<'\n';
    }
    return 0;
}
/*
2
5 10
1 2 3 4 5
5 4 3 2 1
5 10
1 2 3 4 5
5 1 5 4 3

*/

装箱问题

#include <bits/stdc++.h>
using namespace std;
int n,m;
int dp[100005];
int v[205],w[205];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>m>>n;for(int i=1; i<=n; i++){cin>>w[i];for(int j=m; j>=w[i]; j--) dp[j]=max(dp[j],dp[j-w[i]]+w[i]);}//for(int i=1; i<=m; i++) cout<<dp[i]<<" ";//cout<<'\n'; cout<<m-dp[m]<<'\n';return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n,m;
int dp[100005];
int v[205],w[205];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>m>>n;
    for(int i=1; i<=n; i++)
    {
        cin>>w[i];
        for(int j=m; j>=w[i]; j--) dp[j]=max(dp[j],dp[j-w[i]]+w[i]);
    }
    //for(int i=1; i<=m; i++) cout<<dp[i]<<" ";
    //cout<<'\n'; 
    cout<<m-dp[m]<<'\n';
    return 0;
}

数字组合

#include <bits/stdc++.h> 
using namespace std;
int n,m; 
int a[105];
int dp[10005];
int main()
{cin>>n>>m;for(int i=1; i<=n; i++) cin>>a[i];dp[0]=1;for(int i=1; i<=n; i++){int now=a[i];for(int j=m; j>=now; j--) dp[j]+=dp[j-now];}
//	for(int i=1; i<=m; i++) cout<<dp[i]<<" ";
//	cout<<'\n';cout<<dp[m];return 0;
}

#include <bits/stdc++.h> 
using namespace std;
int n,m; 
int a[105];
int dp[10005];
int main()
{
    cin>>n>>m;
    for(int i=1; i<=n; i++) cin>>a[i];
    dp[0]=1;
    for(int i=1; i<=n; i++)
    {
        int now=a[i];
        for(int j=m; j>=now; j--) dp[j]+=dp[j-now];
    }
//    for(int i=1; i<=m; i++) cout<<dp[i]<<" ";
//    cout<<'\n';
    cout<<dp[m];
    return 0;
}

淘淘的盒子

#include <bits/stdc++.h>
using namespace std;
int n,z;
int w[105][3];
int v[105][3];
int s[10005];
int t1[10005];
int t2[10005];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>z;for(int i=1; i<=n; i++){cin>>w[i][1]>>v[i][1];cin>>w[i][2]>>v[i][2];for(int j=z; j>=w[i][1]; j--) t1[j]=max(s[j],s[j-w[i][1]]+v[i][1]);for(int j=z; j>=w[i][2]; j--) t2[j]=max(s[j],s[j-w[i][2]]+v[i][2]);for(int j=z; j>=min(w[i][1],w[i][2]); j--) s[j]=max(t1[j],t2[j]);}cout<<s[z];return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n,z;
int w[105][3];
int v[105][3];
int s[10005];
int t1[10005];
int t2[10005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>z;
    for(int i=1; i<=n; i++)
    {
        cin>>w[i][1]>>v[i][1];
        cin>>w[i][2]>>v[i][2];
        for(int j=z; j>=w[i][1]; j--) t1[j]=max(s[j],s[j-w[i][1]]+v[i][1]);
        for(int j=z; j>=w[i][2]; j--) t2[j]=max(s[j],s[j-w[i][2]]+v[i][2]);
        for(int j=z; j>=min(w[i][1],w[i][2]); j--) s[j]=max(t1[j],t2[j]);
    }
    cout<<s[z];
    return 0;
}
金明的预算方案

#include<bits/stdc++.h>
using namespace std;
int n,m,v1,p1,q1;
int v[105][3],p[105][3];
int s[105][200005];
int main()
{cin>>n>>m;for(int i=1; i<=m; i++){cin>>v1>>p1>>q1;if(q1){if(v[q1][1]){v[q1][2]=v1;p[q1][2]=p1;}else{v[q1][1]=v1;p[q1][1]=p1;}}else{v[i][0]=v1;p[i][0]=p1;}}for(int i=1; i<=m; i++){for(int j=0; j<=n; j++){s[i][j]=s[i-1][j];if(v[i][0]<=j){int nee=v[i][0]*p[i][0];s[i][j]=max(s[i][j],s[i-1][j-v[i][0]]+nee);}if(v[i][0]+v[i][1]<=j){int ne1=v[i][1]*p[i][1];int ne2=v[i][0]*p[i][0];s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][1]]+ne1+ne2);}if(v[i][0]+v[i][2]<=j){int ne1=v[i][2]*p[i][2];int ne2=v[i][0]*p[i][0];s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][2]]+ne1+ne2);}if(v[i][0]+v[i][1]+v[i][2]<=j){int ne1=v[i][0]*p[i][0];int ne2=v[i][1]*p[i][1];int ne3=v[i][2]*p[i][2];s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][1]-v[i][2]]+ne1+ne2+ne3);}}}cout<<s[m][n];return 0;
}

#include<bits/stdc++.h>
using namespace std;
int n,m,v1,p1,q1;
int v[105][3],p[105][3];
int s[105][200005];
int main()
{
    cin>>n>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>v1>>p1>>q1;
        if(q1)
        {
            if(v[q1][1])
            {
                v[q1][2]=v1;
                p[q1][2]=p1;
            }
            else
            {
                v[q1][1]=v1;
                p[q1][1]=p1;
            }
        }
        else
        {
            v[i][0]=v1;
            p[i][0]=p1;
        }
    }
    for(int i=1; i<=m; i++)
    {
        for(int j=0; j<=n; j++)
        {
            s[i][j]=s[i-1][j];
            if(v[i][0]<=j)
            {
                int nee=v[i][0]*p[i][0];
                s[i][j]=max(s[i][j],s[i-1][j-v[i][0]]+nee);
            }
            if(v[i][0]+v[i][1]<=j)
            {
                int ne1=v[i][1]*p[i][1];
                int ne2=v[i][0]*p[i][0];
                s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][1]]+ne1+ne2);
            }
            if(v[i][0]+v[i][2]<=j)
            {
                int ne1=v[i][2]*p[i][2];
                int ne2=v[i][0]*p[i][0];
                s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][2]]+ne1+ne2);
            }
            if(v[i][0]+v[i][1]+v[i][2]<=j)
            {
                int ne1=v[i][0]*p[i][0];
                int ne2=v[i][1]*p[i][1];
                int ne3=v[i][2]*p[i][2];
                s[i][j]=max(s[i][j],s[i-1][j-v[i][0]-v[i][1]-v[i][2]]+ne1+ne2+ne3);
            }
        }
    }
    cout<<s[m][n];
    return 0;
}

包包

未完待续--敬请期待

http://www.xdnf.cn/news/12736.html

相关文章:

  • shell批量添加新用户
  • uni-app学习笔记三十--request网络请求传参
  • 基于 llama-factory进行模型微调
  • android关于pthread的使用过程
  • 【CBAP50技术手册】#39 Roles and Permissions Matrix(角色与权限矩阵):业务分析师的“秩序守护器”
  • 横向对比npm和yarn
  • 基于Vue3.0的在线工具网站
  • 26考研——数据的表示和运算_整数和实数的表示(2)
  • (三)Linux性能优化-CPU-CPU 使用率
  • 强化学习选择rule-based的reward func还是使用reward model / RLAIF?
  • mq安装新版-3.13.7的安装
  • [2025CVPR]确定性图像转换新突破:双逼近器布朗桥模型(Dual-approx Bridge)技术详解
  • LangGraph--Agent工作流
  • 【iOS】 Block再学习
  • iOS 抖音导航栏首页一键分两列功能的实现
  • 2025-06-01-Hive 技术及应用介绍
  • CSS悬停闪现与a标签嵌套的问题
  • SQL手工测试(MySQL数据库)
  • 云原生技术驱动 IT 架构现代化转型:企业实践与落地策略全解
  • 网约车平台(预约打车)
  • 手动给中文分词和 直接用神经网络RNN做有什么区别
  • 使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
  • OPENCV形态学基础之一膨胀
  • 数据结构---红黑树
  • 【大模型LLM学习】function call/agent学习记录
  • Windows开机自动启动中间件
  • CAD多面体密堆积3D插件
  • Maven的使用
  • Mac M芯片 RAG 极简流程 安装 ragflow + LM studio
  • Java 高级泛型实战:8 个场景化编程技巧