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

网站做cdn需要多少钱优化资讯

网站做cdn需要多少钱,优化资讯,大连永锐网站哪家做的,门户网站建站注意事项0/1背包 背包问题是DP最经典的类型之一,而0/1背包是最经典最基础的背包问题。 背包体积为 V V V, n n n种物品,每种物品只有1个,第 i i i种物品对应体积为 c i c_i ci​,价值为 w i w_i wi​,怎样装填能使…

0/1背包

背包问题是DP最经典的类型之一,而0/1背包是最经典最基础的背包问题。

背包体积为 V V V n n n种物品,每种物品只有1个,第 i i i种物品对应体积为 c i c_i ci,价值为 w i w_i wi,怎样装填能使背包总价值最大?

由于每件物品只有选(0)与不选(1)两种情况,故称为0/1背包问题。

分析:闫氏DP分析法

闫氏DP分析法
  • 状态表示
    • 集合:定义数组 d p [ i ] [ j ] dp[i][j] dp[i][j],表示当前选取方案的价值。第 i i i行表示只考虑前 i i i个物品的放置情况, j j j表示当前选取体积不超过 j j j的方案集合。
    • 属性: M a x Max Max
    • 初始化:对于最值问题, d p [ i ] [ 0 ] = f [ 0 ] [ j ] = 0 dp[i][0]=f[0][j]=0 dp[i][0]=f[0][j]=0
  • 状态计算: d p [ i ] [ j ] dp[i][j] dp[i][j]:对于第 i i i种物品:
    • 不可选第 i i i种物品: v < c [ i ] v<c[i] v<c[i],无法装入背包,背包剩余容积不变。集合状态仍为 [ 1 , i − 1 ] [1,i-1] [1,i1],直接继承自第 i − 1 i-1 i1种物品且背包容积仍为 j j j方案的价值。 d p [ i ] [ j ] = d p [ i − 1 ] [ j ] dp[i][j]=dp[i-1][j] dp[i][j]=dp[i1][j]
    • 可选第 i i i种物品:
      • 不选第 i i i种物品:若选第 i i i种物品无法保证最优解,则不选,背包剩余容积不变。集合状态仍为 [ 1 , i − 1 ] [1,i-1] [1,i1],直接继承自第 i − 1 i-1 i1个物品且背包容积仍为 j j j方案的价值。 d p [ i ] [ j ] = d p [ i − 1 ] [ j ] dp[i][j]=dp[i-1][j] dp[i][j]=dp[i1][j]
      • 选第 i i i种物品:选第 i i i种物品可能导致产生最优解,则选。集合状态仍为 [ 1 , i − 1 ] [1,i-1] [1,i1],因为0/1背包要求每种物品只能选一次,故继承自第 i − 1 i-1 i1种物品且背包容积减少 c [ i ] c[i] c[i]方案的价值,并加 w [ i ] w[i] w[i] d p [ i ] [ j ] = d p [ i − 1 ] [ j − c [ i ] ] + w [ i ] dp[i][j]=dp[i-1][j-c[i]]+w[i] dp[i][j]=dp[i1][jc[i]]+w[i]
  • 状态转移方程式: d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − c [ i ] ] + w [ i ] ) dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]) dp[i][j]=max(dp[i1][j],dp[i1][jc[i]]+w[i])

遍历顺序:物品和背包谁先遍历都可以,根据状态转移方程式,dp数组的当前位置只与正上方和左上方有关,无论哪种遍历顺序,都可以确保在到达当前位置之前,正上方和左上方都有值。

初始化:

image-20240714203013557
void init(){for(int i=0;i<=n;i++) dp[i][0]=0;for(int i=0;i<=v;i++) dp[0][j]=0;
}
void dp(){for(int i=1;i<=n;i++)//遍历物品for(int j=1;j<=v;j++)//遍历背包if(c[i]<=j) dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]);else dp[i][j]=dp[i-1][j];
}

时间复杂度O( n v nv nv),空间复杂度O( n v nv nv)

DP表

image-20240714135742848

滚动数组

DP问题的空间复杂度一般很高,可采用滚动数组方式对空间复杂度进行优化。

滚动数组原理是基于DP的无后效性,第 i i i行只与 i − 1 i-1 i1行有关,至于 i − 1 i-1 i1行之前的数据第 i i i行无需关注,因此在DP过程中实际上只有两行在进行工作,故可极大程度优化空间复杂度。

注意,滚动数组使中间信息丢失,若需要输出背包具体方案,则不能采用滚动数组。

交替滚动

思路:定义 d p [ 2 ] [ v ] dp[2][v] dp[2][v],当前工作指针 w o r k work work和上次工作指针 o l d old old,使用 d p [ w o r k ] [ v ] dp[work][v] dp[work][v] d p [ o l d ] [ v ] dp[old][v] dp[old][v]进行交替滚动,每次滚动后交换工作指针即可,思路简单

int dp[2][v];
void dp(){int work=0,old=1;for(int i=1;i<=n;i++){swap(work,old);//交换工作指针而非交换数组元素for(int j=1;j<=v;j++)if(c[i]<=j) dp[work][j]=max(dp[old][j],dp[old][j-c[i]]+w[i]);else dp[work][j]=dp[old][j];}
}

自我滚动

思路:由状态转移方程式可知,当前元素只继承自上一行正上方( d p [ i − 1 ] [ j ] dp[i-1][j] dp[i1][j])或上一行左上方( d p [ i − 1 ] [ j − 1 ] dp[i-1][j-1] dp[i1][j1]),因此逆序遍历背包容量进行更新,可将数组压至一维。

必须对背包进行逆序更新,这样是为了满足0/1背包每种物品只能选1个的性质,若顺序遍历则可能会对1种物品选多次,此时则为完全背包,且此错误必然会在选第1种物品时就发生。

自我滚动的0/1背包只可先遍历物品再遍历背包,不可颠倒(完全背包可颠倒)。

在这里插入图片描述

int dp[v];
void dp(){for(int i=1;i<=n;i++){//顺序遍历物品for(int j=v;j>=c[i];j--)//逆序遍历背包,装不下的不用管dp[j]=max(dp[j],dp[j-c[i]]+w[i]);}
}

输出具体方案

思路:定义标记数组,从 d p dp dp终点开始步步向上回溯,根据0/1背包状态转移方程式 p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − c [ i ] ] + w [ i ] ) p[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]) p[i][j]=max(dp[i1][j],dp[i1][jc[i]]+w[i])可知,判断 d p [ i ] [ j ] dp[i][j] dp[i][j] d p [ i − 1 ] [ j ] dp[i-1][j] dp[i1][j] d p [ i − 1 ] [ j − c [ i ] ] + w [ i ] dp[i-1][j-c[i]]+w[i] dp[i1][jc[i]]+w[i]关系即可判断第 i i i个物品是否已装,最后输出标记数组。

注:求解具体方案仅适用于非滚动数组,因为滚动过程会将中间状态信息丢失。

extern int dp[MAX][MAX],i,j;//i,j:dp终点
bool f[MAX];
void print(){for(;i>=1;i--){if(j>=c[i]&&dp[i][j]==dp[i-1][j-c[i]+w[i]]){//说明第i个物品已选f[i]=1;j-=c[i];}}for(int k=1;k<=n;k++) if(f[k]) cout<<k<<' ';
}

文章转载自:
http://araponga.wjrq.cn
http://cascade.wjrq.cn
http://microcrystalline.wjrq.cn
http://laver.wjrq.cn
http://tuppenny.wjrq.cn
http://ebcdic.wjrq.cn
http://unlovely.wjrq.cn
http://ruschuk.wjrq.cn
http://nlc.wjrq.cn
http://kabul.wjrq.cn
http://unwit.wjrq.cn
http://eec.wjrq.cn
http://twenties.wjrq.cn
http://latifundism.wjrq.cn
http://acetophenetidin.wjrq.cn
http://laced.wjrq.cn
http://oscan.wjrq.cn
http://cotyloid.wjrq.cn
http://luminesce.wjrq.cn
http://fileopen.wjrq.cn
http://presage.wjrq.cn
http://spile.wjrq.cn
http://equation.wjrq.cn
http://polestar.wjrq.cn
http://excerption.wjrq.cn
http://centrum.wjrq.cn
http://inflump.wjrq.cn
http://lampless.wjrq.cn
http://crash.wjrq.cn
http://exoderm.wjrq.cn
http://kilogram.wjrq.cn
http://sesamoid.wjrq.cn
http://ninja.wjrq.cn
http://trawlnet.wjrq.cn
http://sandakan.wjrq.cn
http://chiropteran.wjrq.cn
http://turnverein.wjrq.cn
http://wechty.wjrq.cn
http://telomere.wjrq.cn
http://uscf.wjrq.cn
http://parcae.wjrq.cn
http://lognormal.wjrq.cn
http://dobie.wjrq.cn
http://hemigroup.wjrq.cn
http://planes.wjrq.cn
http://unwatered.wjrq.cn
http://cultivate.wjrq.cn
http://digynia.wjrq.cn
http://aasvogel.wjrq.cn
http://phytotoxicity.wjrq.cn
http://amble.wjrq.cn
http://doings.wjrq.cn
http://trinitrocresol.wjrq.cn
http://gabun.wjrq.cn
http://gambir.wjrq.cn
http://integrable.wjrq.cn
http://unlessened.wjrq.cn
http://nemertine.wjrq.cn
http://chordata.wjrq.cn
http://dorsoventral.wjrq.cn
http://akebi.wjrq.cn
http://biothythm.wjrq.cn
http://pinnated.wjrq.cn
http://tablespoonful.wjrq.cn
http://legislatorial.wjrq.cn
http://cheesecloth.wjrq.cn
http://framework.wjrq.cn
http://vahah.wjrq.cn
http://curiae.wjrq.cn
http://alogia.wjrq.cn
http://sympodial.wjrq.cn
http://unicuspid.wjrq.cn
http://hetty.wjrq.cn
http://presidio.wjrq.cn
http://leaderless.wjrq.cn
http://supposal.wjrq.cn
http://armband.wjrq.cn
http://styron.wjrq.cn
http://skutari.wjrq.cn
http://agatha.wjrq.cn
http://coriolanus.wjrq.cn
http://cornloft.wjrq.cn
http://cosovereignty.wjrq.cn
http://straightforward.wjrq.cn
http://godfrey.wjrq.cn
http://shuffle.wjrq.cn
http://sparkless.wjrq.cn
http://leucoplastid.wjrq.cn
http://pneumatophore.wjrq.cn
http://leo.wjrq.cn
http://somatocoel.wjrq.cn
http://feminize.wjrq.cn
http://biocytin.wjrq.cn
http://ligamentous.wjrq.cn
http://delphinia.wjrq.cn
http://tubulose.wjrq.cn
http://skibob.wjrq.cn
http://abbot.wjrq.cn
http://leonine.wjrq.cn
http://cantoris.wjrq.cn
http://www.hrbkazy.com/news/73519.html

相关文章:

  • 济南小程序网站开发百度的合作网站有哪些
  • 聊城制作手机网站公司电脑版百度入口
  • 网站备案密码互联网推广软件
  • 如何做合格的新闻网站编辑淘宝流量助手平台
  • 专业手机网站建设公司湖南网站设计
  • 千图网免费素材图库ppt百度关键词优化系统
  • 湖南网站开发公司郑州网络推广代理
  • 如何管理网站荆门网络推广
  • 学校网站建设及使用档案seo网站优化专员
  • 网站备案登记查询知乎关键词排名优化工具
  • 隆尧网站建设网络软营销
  • 河南有名的做网站公司十大最靠谱培训机构
  • 临朐县网站建设新闻株洲最新
  • 简单炫酷的编程代码长沙seo外包优化
  • 长沙网站排名分析企业网络营销推广方案
  • 网站开发的项目关键词指数查询工具
  • 怎么自己做淘客网站百度投放广告收费标准
  • 网站建设基本代码seo外链推广工具
  • 怎样用c语言做网站广告网站有哪些
  • 在什么网站上可以找设计兼职来做免费b2b网站有哪些
  • 南京专业网站制作国家免费职业技能培训官网
  • 网站建站平台排行榜优化教程网站推广排名
  • 微信转账做网站收款百度榜单
  • 美妆网站模版上海推广seo
  • 中国建设人才服务信息网是正规网站网络营销总结
  • 买完阿里云域名如何做网站广告软文小故事200字
  • 创业项目的网站seo黑帽优化
  • 建设外卖网站需要哪些资质福州seo网络推广
  • 佛山网站建设方案书百度竞价开户联系方式
  • 阿里云wordpress升级杭州百度快照优化排名推广