洛谷p1048採藥

2021-08-19 06:40:23 字數 896 閱讀 9874

辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說:「孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡,你可以採到一些草藥。如果你是乙個聰明的孩子,你應該可以讓採到的草藥的總價值最大。」(

如果你是辰辰,你能完成這個任務嗎?

這題是乙個簡單基礎的01揹包問題,或者說是模板題,01揹包主**如下:

for(int i=1;i<=n;i++)

}

什麼意思呢?是這樣的:「將前i件物品放入容量為j的揹包中」這個子問題,若只考慮第i件物品的策略(放或不放),那麼就可以轉化為乙個只牽扯前i-1件物品的問題。如果不放第i件物品,那麼問題就轉化為「前i-1件物品放入容量為j的揹包中」,價值為f[i-1][j];如果放第i件物品,那麼問題就轉化為「前i-1件物品放入剩下的容量為j-w[i]的揹包中」,此時能獲得的最大價值就是f[i-1][j-c[i]](c[i]為價值)再加上通過放入第i件物品獲得的價值c[i]。

如果知道了這些,此題難度是不是大大下降?好了,直接粘**吧:

#include #include int f[1009][109];

int w[101],c[101];//陣列開在外面

using namespace std;

int main()

for(i=1;i<=m;i++)//狀態轉移方程

else

}} printf("%d",f[m][t]);

return 0;

}

洛谷 P1048 採藥

題目描述 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡...

洛谷 P1048 採藥

題目描述 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡...

洛谷 P1048 採藥

辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時間,在這段時間裡,你可以採...