題目描述【版權說明】
本題為改編題。
【問題描述】
發鳩之山,其上多柘木。有鳥焉,其狀如烏,文首,白喙,赤足,名曰精衛,其名自詨。是炎帝之少女,名曰女娃。女娃遊於東海,溺而不返,故為精衛。常銜西山之木石,以堙於東海。——《山海經》
精衛終於快把東海填平了!只剩下了最後的一小片區域了。同時,西山上的木石也已經不多了。精衛能把東海填平嗎?
事實上,東海未填平的區域還需要至少體積為v的木石才可以填平,而西山上的木石還剩下n塊,每塊的體積和把它銜到東海需要的體力分別為k和m。精衛已經填海填了這麼長時間了,她也很累了,她還剩下的體力為c。
輸入格式 輸入檔案的第一行是三個整數:v、n、c。
從第二行到第n+1行分別為每塊木石的體積和把它銜到東海需要的體力。
輸出格式 輸出檔案只有一行,如果精衛能把東海填平,則輸出她把東海填平後剩下的最大的體力,否則輸出』impossible』(不帶引號)。
輸入輸出樣例
輸入 #1
100210
505505
輸出 #1:
0
輸入 #2
1021
505102
輸出 #2:
impossible
說明/提示 【資料範圍】
對於20%的資料,0dp[j]=max(dp[j],dp[j-w[i]]+v[i]);/即找出j時的最大價值,不斷遞推。
**:
#include
using
namespace std;
typedef
long
long
int ll;
const ll n=
1e5+10;
ll w[n]
,v[n]
,dp[n]
,s,n,c;
//價值v[i],體積w[i],dp[i]記錄能裝的最大價值
intmain()
//如果 j}
int i=c;
if(dp[c]
"impossible"
return0;
}
動態規劃之01揹包
動態規劃的基本思想 將乙個問題分解為子問題遞迴求解,且將中間結果儲存以避免重複計算。通常用來求最優解,且最優解的區域性也是最優的。求解過程產生多個決策序列,下一步總是依賴上一步的結果,自底向上的求解。動態規劃演算法可分解成從先到後的4個步驟 1.描述乙個最優解的結構,尋找子問題,對問題進行劃分。2....
動態規劃之01揹包
01揹包問題,是用來介紹動態規劃演算法最經典的例子,網上關於01揹包問題的講解也很多,我寫這篇文章力爭做到用最簡單的方式,最少的公式把01揹包問題講解透徹。f i,j 表示在前i件物品中選擇若干件放在承重為 j 的揹包中,可以取得的最大價值。pi表示第i件物品的價值。決策 為了揹包中物品總價值最大化...
動態規劃 01揹包
最優二叉查詢樹.cpp 定義控制台應用程式的入口點。01揹包問題。include stdafx.h include include define n 3 the number of real node define m 10 using namespace std int tmain int arg...