DP 揹包問題(二)

2022-07-27 05:15:10 字數 539 閱讀 9356

01揹包大家一定都會……

但如果01揹包的w很大怎麼辦……

此時我們觀察,若v[i]很小,我們可以考慮建立有關v[i]的方程

方程內容大概是:在達到某一v時,所需的總w最小

說多了不如上**:

1 #include2 #include3 #include4 #include5 #include

6 #include7

using

namespace

std;

8int

n,m,sumv,ans;

9int dp[300][234000],w[500],v[500

],wi,vi;

10int a[300

];11

intmain()25}

26for(int i=1;i<=sumv;i++) if(dp[n][i]<=m) ans=i;

27 printf("

%d\n

",ans);

28return0;

29 }

DP 揹包問題

大牛 以下使用滾到陣列 若輸入要求一般,可以邊定義狀態邊輸入,不需儲存 memset f,0,sizeof int n 若求最小值,除 f 0 其餘初始化為 inf,f 0 0是必須的 求最大最小都一樣 確保有從無到有的起點 0 1揹包 一般形式 f i v max f i 1 v f i 1 v ...

揹包問題 DP

01揹包 現在有1個體積為mmax的揹包和n種物品 每種物品只有1個 每種物品的體積和價值分別是v i 和w i 求這個揹包最多可以裝價值多少的物品。這是最基礎的揹包問題,特點是 每種物品僅有一件,可以選擇放或不放。用子問題定義狀態 設f i j 表示前i件物品恰放入乙個容量為j的揹包可以獲得的最大...

DP 揹包問題

小明同學在參加一場考試,考試時間2個小時。試卷上一共有n道題目,小明要在規定時間內,完成一定數量的題目。考試中不限制試題作答順序,對於 i 第道題目,小明有三種不同的策略可以選擇 1 直接跳過這道題目,不花費時間,本題得0分。2 只做一部分題目,花費pi分鐘的時間,本題可以得到ai分。3 做完整個題...