在實際應用中,展示動態規劃的用法。
01揹包問題
#include#includeusing namespace std;
int val[5000];
int wei[5000];
int f[13000];
inline int max(int a,int b)
int main()
cout<
大意:一共有n個管道,每個管道的**和流量不同,乙個裝置由不同的管道構成,每種管道有多種選擇,他們的**或流量不同,結果應選出**之和最小與最小管道流量最大的組合。
#include#include#include#includeusing namespace std;
#define max(a,b) (a>b?a:b)
struct reco
re[120][120];
int mip[120];
int dp[120][1200];//dp[i][j],,,i表示第i號線路,j表示流量
int main()
}for(int i=0;i<=maxb;++i) //後面會用到dp[0],而其值應為0.
dp[0][i]=0;
float ans=0;
for(int i=1;i<=line;++i)
for(int j=1;j<=mip[i];++j)
for(int i=1;i<=maxb;++i)
ans=max(ans,1.0*i/dp[line][i]);
cout<
完全揹包問題:
每種物品都可以取任意次。
#include#includeusing namespace std;
int min(int a,int b)
int dp[10010];
int weic;//重量
int valc;//面值
int weight;
void solve()}}
if(dp[weight]!=-1)
cout<<"the minimum amount of money in the piggy-bank is "<>t;
while(t--)
}
未完待續。。。
線性動態規劃的歸納總結
lcs問題 矩陣路徑問題 只能往右或往下 其他線性dp 歸納模式二 相鄰選點 歸納模式三 物品分配 歸納模式四 線段覆蓋 雜項歸納模式六 方法1,o n2 暴力 int main ans max ans,f i cout 方法2,o nlogn 二分查詢 void run int n cout in...
線段樹用法歸納
基本的建立線段樹和查詢一段區間內最小值與最大值。方法一 include include includeusing namespace std struct sto int a 1000300 sto m 8000300 構建線段樹,目的 得到m陣列.void build int node,int b...
split 的用法歸納
python中常常用到split 方法,今天歸納一下這個方法具體用法1.input split 輸入wang a tao 會被自動分割為wang a tao 三個單元,並且每個單元都是乙個整體 s wang a tao split 此時s為list型 for i in s print i 輸出結果 ...