1. 程式人生 > >洛谷:采藥與瘋狂采藥

洛谷:采藥與瘋狂采藥

-c sin 背包問題 turn 輸入格式 背包 nbsp Go 是個

P1048 采藥(01背包問題)

題目描述

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

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

輸入輸出格式

輸入格式:

第一行有 22 個整數 T(1 \le T \le 1000)T(1T1000) 和 M(1 \le M \le 100)M(1M100) ,用一個空格隔開, TT 代表總共能夠用來采藥的時間, MM 代表山洞裏的草藥的數目。
接下來的 MM 行每行包括兩個在 11 到 100100 之間(包括 11 和 100100 )的整數,分別表示采摘某株草藥的時間和這株草藥的價值。

輸出格式:

11 個整數,表示在規定的時間內可以采到的草藥的最大總價值。

輸入輸出樣例

輸入樣例#1: 復制
70 3
71 100
69 1
1 2

輸出樣例#1: 復制
3

說明

對於30%的數據, M \le 10M10 ;

對於全部的數據, M \le 100M100 。

NOIP2005普及組第三題

菜雞代碼:

#include<iostream>
#include<cstring>
using namespace std;
int n,m;
int v[105],w[105];
int a[105][1005];
int main()
{ int i,j;
memset(a,0,sizeof(a));
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>v[i]>>w[i];
}

for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(j>=v[i])
{
a[i][j]=max(a[i-1][j],a[i-1][j-v[i]]+w[i]);
}
else a[i][j]=a[i-1][j];
}
}
cout<<a[m][n]<<endl;
return 0;
}

P1616 瘋狂的采藥(完全背包問題)

題目背景

此題為NOIP2005普及組第三題的瘋狂版。

此題為紀念LiYuxiang而生。

題目描述

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

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

此題和原題的不同點:

1.每種草藥可以無限制地瘋狂采摘。

2.藥的種類眼花繚亂,采藥時間好長好長啊!師傅等得菊花都謝了!

輸入輸出格式

輸入格式:

輸入第一行有兩個整數T(1 <= T <= 100000)和M(1 <= M <= 10000),用一個空格隔開,T代表總共能夠用來采藥的時間,M代表山洞裏的草藥的數目。接下來的M行每行包括兩個在1到10000之間(包括1和10000)的整數,分別表示采摘某種草藥的時間和這種草藥的價值。

輸出格式:

輸出一行,這一行只包含一個整數,表示在規定的時間內,可以采到的草藥的最大總價值。

輸入輸出樣例

輸入樣例#1: 復制
70 3
71 100
69 1
1 2
輸出樣例#1: 復制
140

說明

對於30%的數據,M <= 1000;

對於全部的數據,M <= 10000,且M*T<10000000(別數了,7個0)。

加油LiYuxiang,第一個AC留給你!

代碼:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int ti,m,a,b,c[100002];
int main()
{ int i,j;
memset(c,0,sizeof(c));
cin>>ti>>m;
for(i=1;i<=m;i++)
{
cin>>a>>b;
for(j=1;j<=ti;j++)
{
if(j>=a) c[j]=max(c[j],c[j-a]+b);
}
}
cout<<c[ti]<<endl;
}

洛谷:采藥與瘋狂采藥