您现在的位置是:主页 > news > 水平滚动网站/推广之家官网

水平滚动网站/推广之家官网

admin2025/6/24 5:20:09news

简介水平滚动网站,推广之家官网,互联网做视频网站需要许可证吗,百度域名排行3269 混合背包 时间限制: 1 s空间限制: 256000 KB题目等级 : 钻石 Diamond题解题目描述 Description背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 &…

水平滚动网站,推广之家官网,互联网做视频网站需要许可证吗,百度域名排行3269 混合背包 时间限制: 1 s空间限制: 256000 KB题目等级 : 钻石 Diamond题解题目描述 Description背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 &…

3269 混合背包

 

 时间限制: 1 s
 空间限制: 256000 KB
 题目等级 : 钻石 Diamond
题解
题目描述 Description

背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?

输入描述 Input Description

第一行两个数N,V,下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=-1表示数量无限

输出描述 Output Description

1个数Ans表示所装物品价值的最大值

样例输入 Sample Input

2 10

3 7 2

2 4 -1

样例输出 Sample Output

22

数据范围及提示 Data Size & Hint

对于100%的数据,V <= 200000 , N <= 200

分类标签 Tags 点此展开 

动态规划 背包型DP 线性结构 队列
背包dp例题(二进制拆分),复习一下,so仅贴AC代码 
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define N 300010
int v[N],c[N],e[N],f[N];
int n,m,n1;
int main(){scanf("%d%d",&n,&m);for(int i=0;i<=22;i++) e[i]=1<<i;for(int i=1,x,y,s;i<=n;i++){scanf("%d%d%d",&x,&y,&s);int t=0;if(s==-1) s=m/x;while(s>=e[t]){v[++n1]=x*e[t];c[n1]=y*e[t];s-=e[t++];}if(s>0){v[++n1]=x*s;c[n1]=y*s;}}for(int i=1;i<=n1;i++){for(int j=m;j>=v[i];j--){f[j]=max(f[j],f[j-v[i]]+c[i]);}}printf("%d\n",f[m]);return 0;
}

 

转载于:https://www.cnblogs.com/shenben/p/5778517.html