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

视频网站用虚拟主机wordpress 百科插件

视频网站用虚拟主机,wordpress 百科插件,寻找做网站的公司,可以做国外购物的网站一,背包问题 老规矩,上链接(http://t.csdn.cn/hEwvu) (1)01背包问题 给定一个承重量为C的背包,n个重量分别为w1​,w2​,...,wn​的物品,物品i放入背包能产生pi​(>0)的价值(i1,…

一,背包问题

老规矩,上链接(http://t.csdn.cn/hEwvu)

(1)01背包问题

给定一个承重量为C的背包,n个重量分别为w1​,w2​,...,wn​的物品,物品i放入背包能产生pi​(>0)的价值(i=1,2,...,n)。每个物品要么整个放入背包,要么不放。要求找出最大价值的装包方案。
 

输入格式:

输入的第一行包含两个正整数n和C(1≤n≤20),第二行含n个正整数分别表示n个物品的重量,第三行含n个正整数分别表示n个物品放入背包能产生的价值。

输出格式:

在一行内输出结果,包括最大价值装包方案的价值、具体装包方案,用空格隔开。具体装包方案是n个物品的一个子集,用长度为n的0、1串表示(1表示对应物品被选中,0表示没有被选中)。如果这样的0、1串不唯一,取字典序最大的那个串。

输入样例:

    4 9
    2 3 4 5
    3 4 5 7

输出样例:

12 1110

(注:1110 和0011都是价值最大的装包方案,取字典序最大的结果即为1110)

思想:最最经典的dp问题,画个图就明白了。

 AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int dp[N][N], w[N], val[N];int main()
{int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) cin >> w[i];//重量for (int i = 1; i <= n; i++) cin >> val[i];//价值//求最大价值for (int i = 1; i <= n; i++) {for (int j = 0; j <= m; j++) {if (j >= w[i]) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + val[i]);else dp[i][j] = dp[i - 1][j];}}cout << dp[n][m] << endl;//打印字典序for (int i = 1; i <= n; i++) {if (dp[i][m] - dp[i - 1][m] == 0) cout << "0";else cout << "1";}return 0;
}

利用滚动数组优化,将二维数组降为一维数组

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
int dp[N], t[N], val[N];int main()
{int time, n;cin >> time >> n;for (int i = 1; i <= n; i++) cin >> t[i] >> val[i];for (int i = 1; i <= n; i++) {//时间为j时的最大价值for (int j = time; j >= t[i]; j--) {//这里j倒序是为了防止重复拿同一件物品dp[j] = max(dp[j], dp[j - t[i]] + val[i]);}}cout << dp[time] << endl;return 0;
}

(2)完全背包问题

有一个容积为 V 的背包,同时有 n 种物品,每种物品均有各自的体积 w 和价值 v,每种物品的数量均为无限个,求使用该背包最多能装的物品价值总和。



疯狂的采药 - 洛谷

思路:我们此时在多家一重循环表示同一种物品的数量就可以了,那么我们的递推式就变为

dp[i][j] = max( dp[i-1][j] , dp[i-1][ j - k*w[i] ] + k*v[i] )

AC代码

#include<iostream>
using namespace std;const int N=1005;
const int M=105;
int n,m,maxValue,temp;
int dp[M][N],t[M],v[M];int main()
{cin>>n>>m;for(int i=1;i<=m;i++) cin>>t[i]>>v[i];for(int i=1;i<=m;i++)for(int j=1;j<=n;j++){maxValue=0;for(int k=0;k*t[i]<=j;k++){temp=dp[i-1][j-k*t[i]]+k*v[i];if(temp>maxValue) maxValue=temp;}dp[i][j]=maxValue;}cout<<dp[m][n]<<endl;return 0;
}

这段代码是不能通过测试的,因为本题的数据比较大,而且我们用了三重循环,时间复杂度比较高,所以此方法不行。

同样的,我们使用滚动数组进行优化。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e7 + 5;
long long dp[N], t[N], val[N];//数据过大,开长整型int main()
{int time, n;cin >> time >> n;for (int i = 1; i <= n; i++) cin >> t[i] >> val[i];for (int i = 1; i <= n; i++) {for (int j = t[i]; j <=time; j++) {dp[j] = max(dp[j], dp[j - t[i]] + val[i]);}}cout << dp[time] << endl;return 0;
}

(3)

http://www.yayakq.cn/news/382159/

相关文章:

  • 企业网站的模块功能织梦网站统计代码
  • 海外网站加速器免费wordpress 优惠券主题
  • 漳平网站编辑价格网站配置域名
  • 江苏SEO网站建设室内设计学校前十
  • 在吗做网站商城手机html5网站源码
  • 网站建设服务类型现状百度seo关键词
  • 开封网站建设流程与步骤智通东莞人才网
  • wordpress调用外部数据库连接wordpress站怎么优化
  • 专门做网站的公司有哪些专门教人做点心的网站
  • 四站合一网站制作seo优化有哪些
  • 神马网站可以做兼职和田网页设计
  • gta买办公室网站建设中荆州网站推广怎么做
  • 对比色的网站网页制作基础教程免费
  • 专业苏州网站建设公司排名广东省白云区属于哪个市
  • 做网站功能模块公司网站备案具体什么情况
  • 有关建设旅行网站的建设糖尿病吃什么药降糖效果好
  • 建筑工地招聘网站搜索关键词优化服务
  • 做网站总结与体会wordpress模板数据
  • wordpress4.7.3下载sem和seo是什么意思
  • wordpress计费查询深圳谷歌seo公司
  • 网站建设和运营的成本是多少钱wordpress5.2下载
  • android移动网站开发详解光盘下载国外网站设计欣赏分析
  • linux网站开发软件网络营销有哪些主要功能?
  • 巴彦淖尔专业做网站的北京 建公司网站要多少钱
  • 美团网站开发站长工具源码
  • php网站底部文件后端开发工程师前景
  • 网站风格定位有哪些国内购物网站大全
  • 电子商务网站建设与管理的论文题目深圳建筑协会
  • 饰品 东莞网站建设世界军事
  • 网站建设公司哪个好呀外链建设都需要带网站网址