SDNU 1423.入学考试(01背包)
生活随笔
收集整理的這篇文章主要介紹了
SDNU 1423.入学考试(01背包)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Description
問(wèn)題描述 辰辰是個(gè)天資聰穎的孩子,他的夢(mèng)想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望的醫(yī)師為師。醫(yī)師為了判斷他的資質(zhì),給他出了一個(gè)難題。醫(yī)師把他帶到一個(gè)到處都是草藥的山洞里對(duì)他說(shuō):“孩子,這個(gè)山洞里有一些不同的草藥,采每一株都需要一些時(shí)間,每一株也有它自身的價(jià)值。我會(huì)給你一段時(shí)間,在這段時(shí)間里,你可以采到一些草藥。如果你是一個(gè)聰明的孩子,你應(yīng)該可以讓采到的草藥的總價(jià)值最大。” 如果你是辰辰,你能完成這個(gè)任務(wù)嗎? 輸入格式 第一行有兩個(gè)整數(shù)T(1? < =? T? < =? 1000)和M(1? < =? M? < =? 100),用一個(gè)空格隔開(kāi),T代表總共能夠用來(lái)采藥的時(shí)間,M代表山洞里的草藥的數(shù)目。接下來(lái)的M行每行包括兩個(gè)在1到100之間(包括1和100)的整數(shù),分別表示采摘某株草藥的時(shí)間和這株草藥的價(jià)值。 輸出格式 包括一行,這一行只包含一個(gè)整數(shù),表示在規(guī)定的時(shí)間內(nèi),可以采到的草藥的最大總價(jià)值。 樣例輸入 70? 3 71? 100 69? 1 1? 2 樣例輸出 3 數(shù)據(jù)規(guī)模和約定 對(duì)于30%的數(shù)據(jù),M? < =? 10; 對(duì)于全部的數(shù)據(jù),M? < =? 100。Input
Output
Sample Input
Sample Output
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; #define ll long long ll t,m,dp[1000+8][1000+8],w[1000+8],v[1000+8]; void solve() {for(ll i=m-1;i>=0;i--){for(ll j=0;j<=t;j++){if(j<w[i]){dp[i][j]=dp[i+1][j];}else{dp[i][j]=max(dp[i+1][j] , dp[i+1][j-w[i]]+v[i]);}}}printf("%lld\n",dp[0][t]); } int main() {scanf("%lld%lld",&t,&m);for(ll i=0;i<m;i++){scanf("%lld%lld",&w[i],&v[i]);}solve();return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/RootVount/p/11252974.html
總結(jié)
以上是生活随笔為你收集整理的SDNU 1423.入学考试(01背包)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SDNU 1427.分解质因数(水题)
- 下一篇: 利用CSIDL打开特殊文件夹