【揹包/遞推】01揹包
題目
經典啊。。。
輸入
第1行:兩個整數,M(揹包容量,M<=200)和N(物品數量,N<=30); 第2至N+1行:每行二個整數Wi,Ci,表示每個物品的重量和價值。
輸出
僅一行,一個數,表示最大總價值。
思路
DP 用個數組k表示當空間=j時,最大價值。如果k[j]放得下此物品,比較k[j]和k[j-空間],賦值。 然後輸出k[m]。
程式碼
#include<cstdio> int m,n,i,j,k[201]={0},a,z; int main(){ scanf("%d%d",&m,&n); for(i=1;i<=n;i++){ scanf("%d%d",&a,&z); for(j=m;j>=a;j--) if(k[j-a]+z>k[j]) k[j]=k[j-a]+z; } printf("%d",k[m]); }
相關推薦
【揹包/遞推】01揹包
題目 經典啊。。。 輸入 第1行:兩個整數,M(揹包容量,M<=200)和N(物品數量,N<=30); 第2至N+1行:每行二個整數Wi,Ci,表示每個物品的重量和價值。 輸出 僅一行,一個數,表示最大總價值。 思路 DP 用個數組k表示當空間=j時
Bookshelf 2(poj3628,01揹包,dp遞推) 對01揹包的分析與理解(圖文)
題目連結:Bookshelf 2(點選進入) 題目解讀: 給n頭牛,給出每個牛的高度h[i],給出一個書架的高度b(所有牛的高度相加>書架高度b),現在把一些牛疊起來(每頭牛隻能用一次,但不同的牛可能身高相同),在這些疊起來的牛的總高度>書架b的基礎上,找出最小的差距(由於輸入的資料會保證所有
【記憶化搜尋】01揹包
記憶化搜尋也是實現dp的一種,有時候可能比狀態轉移方程推過去複雜,但有時候因為是直接去搜索,反而降低了思維難度 就用01揹包來練練手(設c為容量,w為重量,v為價值) 記憶化搜尋是在搜尋的基礎上,進行優化,跳過開啟相同的子樹,從而避免大量的重複計算。因為在
【完全揹包/母函式/遞推】HDU1028-Ignatius and the Princess III
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1028 Problem Description "Well, it seems the first problem is too easy. I will let you
【揹包問題】 01揹包+完全揹包+多重揹包
前言 揹包問題(Knapsack problem)是一種組合優化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放置於給定揹包中。相似問題經常出現在商業、組合數學,計算複
【二維費用的01揹包 HDU3496 HDU2184】
HDU3496 已空間優化 疑惑點在 dp[時間][看電影數量]的初始化問題上面 dp[0][0]=0。。。。是吧 dp[0][i]=-inf,,,,,,,這個-inf一
【揹包問題】 01揹包+完全揹包+多重揹包
前言 揹包問題(Knapsack problem)是一種組合優化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源於如何選擇最合適的物品放置於給定揹包中。相似問題經常出現在商業
【動態規劃】--01揹包問題
o1揹包問題:一個揹包體積為V, 現有n個物品,第i個物品體積為w[i],價值為c[i]。問在不超出揹包 容量前提下,揹包 最多能裝下多少價值的物品。 之所以叫01揹包是因為這類題都可以歸結為第i個物品 放還是不放問題。這裡用二維陣列表示(當然也可用一維) 若第i個物品放
【演算法總結】01揹包與完全揹包 模板整理
三種揹包的概念區分 01揹包(ZeroOnePack): 有N件物品和一個容量為V的揹包。每種物品均只有一件。第i件物品的費用是c[i],價值是w[i]。求解將哪些物品裝入揹包可使價值總和最大。完全揹
【揹包專題】01揹包
暑假集訓開始了,按照隊裡的分配,我是弄DP的,嘛,於是我又一次的開始了從01揹包開始學習,昨天將杭電的幾道01揹包重新做了一遍,下面講講我自己對於01揹包的理解。 首先01揹包題目的雛形是 有N件物品和一個容量為V的揹包。第i件物品的費用是c[i],價值是w[i]。求解將
【揹包問題】01揹包 多重揹包 完全揹包
01揹包 0-1揹包問題是指每一種物品都只有一件,可以選擇放或者不放。 方法一 V(i,j)表示前i種物品恰放入一個容量為j的揹包的最大價值,因此狀態轉移方程: j<w(i) V(i,j)=V(i-1,j) j>=w(i) V(i,j)=m
【演算法題】01揹包問題
寫於2017/11/17 1、問題描述 有m件物品,它們的重量分別是W1,W2,…,Wm,它們的價值分別是V1,V2,…,Vm,現在給你個承重為n的揹包,如何讓揹包裡裝入的物品具有最大的價值總和? 2、解題思路 典型的動態規劃問題。 為
【找規律】【遞推】【二項式定理】Codeforces Round #419 (Div. 1) B. Karen and Test
main turn logs pow 分享 string ren () 奇數 打個表出來看看,其實很明顯。 推薦打這倆組 11 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 10000000
【LIS】【遞推】Gym - 101246H - ``North-East''
math put ast algo -i eas inpu freopen define x坐標排序,y坐標當權值,同一個x坐標的,y從大到小排。 求f(i)表示以i結尾的LIS以後,從後向前枚舉,不斷更新一個max數組,max(i)代表最長上升子序列為i時,當前的 結尾的
poj 2096 Collecting Bugs 【概率DP】【逆向遞推求期望】
tdi cor ros quick -a sim total 3.0 pla Collecting Bugs Time Limit: 10000MS Memory Limit: 64000K Total Submissions
UVa 825【簡單dp,遞推】
space 遞推 log 題目 logs .org str eof scan UVa 825 題意:給定一個網格圖(街道圖),其中有一些交叉路口點不能走。問從西北角走到東南角最短走法有多少種。(好像沒看到給數據範圍。、。) 簡單的遞推吧,當然也就是最簡單的動歸了。顯然最短路
1002. [FJOI2007]輪狀病毒【找規律+遞推】
stream istream tdi data urn 打表 pan www void Description 輪狀病毒有很多變種,所有輪狀病毒的變種都是從一個輪狀基產生的。一個N輪狀基由圓環上N個不同的基原子 和圓心處一個核原子構成的,2個原子之間的邊表示這2
牛客國慶集訓派對Day2 F 平衡二叉樹【遞推】
時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 1048576K,其他語言2097152K 64bit IO Format: %lld 題目描述 平衡二叉樹,顧名思義就是一棵“平衡”的二叉樹。在這道題中,“平衡”的定義為,對於樹中任意一個節點,都滿足左右子樹的
【POJ1958】【典型遞推問題】漢諾塔問題
題意: 給你n個盤子,問在四個柱子的情況下,最少需要多少步才能將n個盤子移動到另一個柱子上。 思路: 先來看看最經典的三個柱子問題。 f3[
2018ACM-ICPC徐州賽區網路賽: A. Hard to prepare【遞推】
題目連結:傳送門 題意就不說了 思路: 一開始比賽的時候就是想 k = 2^m 答案等於 k*((k-1)^(m-1)) 發現多了情況 因為是個環 然後換成 k*((k-2)^(m-1