攜程的第二場第二題,比賽時被水過去了。。。
題目給一些木棒,要求全部用上形成三條邊,問能形成的三角形最大面積是多少?
題意很明確,只需要確定所有能形成的邊的組合,再從這些組合中求最大值即可。
用二維陣列dp[i][t]表示邊長分別為i和t,兩邊確定,第三條邊邊長為sum-i-t,然後就是揹包確定能否形成i和t兩條邊的過程了。
很簡單的二維揹包,比賽時看出來是揹包,沒想到這點,以至於花了大把時間去水掉,還是做過的題目太少。
**:
#include #include #include #include using namespace std;
int dp[801][801];
int a[41];
int n;
double sum;
bool sap(int a,int b,int c)
int s(int a,int b,int c)
int main()}}
int m=-1;
for (int i=0;i<=sum/2;i++)}}
printf("%d\n",m);
}}
FATE(二維揹包)
c fate time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status use mathjax to parse formulas description 最近xhd正在玩一款叫做fate的遊戲,為了...
二維揹包問題
步驟 1 建立目標域 即,多個揹包的可能性組合 2 判斷當前時刻的狀態值 例題 輸入 array m 5,n 3 輸出 4 解釋 總共 4 個字串可以通過 5 個 0 和 3 個 1 拼出,即 10 0001 1 0 解題思路 1.可用0和1的個數可以看成不同容量的揹包 二維 dp i j i 表示...
揹包衍化 二維01揹包
問題引入 有兩種物品 銷售,每種包裝裡兩種物品各有x,y x,yx,y個,售價為t tt元,共有s ss個 銷售的包裝。現在需要兩種物品n,m n,mn,m個,問如何購買可以滿足需要並且花費最少的錢 狀態轉移 設d i j d i j d i j 表示第 一 二種物品分別買了i,j i,ji,j個的...