不多说什么,看着模板就知道了,就是最基本的那种背包,满大街都是。。
kAri-417丁神又去谷歌
时间限制 1000 ms
内存限制 65536 KB
题目描述
丁神又要去Google上班了,这一次丁神想多做几道水题,并使题目的总水量最大.丁神同一时刻只能在水一道题,只有做完这道题才能得到它的水值,丁神的总时间为
t
,现在一共有
n
道题,编号从1到
n
,每道题有两个值
a
和
b
,
a
为做这道题需要的时间,
b
为题目的水值。
输入格式
输入第一行为数据组数
T(T≤10)
,接下来
T
组数据,每组数据中第一行为两个数
t
和
n
,
n
为题目的数量,
t
为总时间,接下来
n
行,每行两个正整数
a
和
b
。
(1≤a,t≤1000,1≤n≤100,1≤b≤1000000000)
输出格式
对于每组数据,输出对应的最大总水量,每个输出占一行。
输入样例
1
10 2
8 16
6 12
输出样例
16
kAri-417丁神又去谷歌
题目描述
丁神又要去Google上班了,这一次丁神想多做几道水题,并使题目的总水量最大.丁神同一时刻只能在水一道题,只有做完这道题才能得到它的水值,丁神的总时间为 t ,现在一共有 n 道题,编号从1到 n ,每道题有两个值 a 和 b , a 为做这道题需要的时间, b 为题目的水值。
输入格式
输入第一行为数据组数 T(T≤10) ,接下来 T 组数据,每组数据中第一行为两个数 t 和 n , n 为题目的数量, t 为总时间,接下来 n 行,每行两个正整数 a 和 b 。 (1≤a,t≤1000,1≤n≤100,1≤b≤1000000000)
输出格式
对于每组数据,输出对应的最大总水量,每个输出占一行。
输入样例
1
10 2
8 16
6 12
输出样例
16
我的血泪都在代码里了
#include
int c[101];
long long int w[101];
/**
都说上帝创造了世界,但是魔鬼创造了边界,此话果然不假,
我看long long 看得满心满身都是泪 T.T
*/
long long int af[10001];
int main()
{
int i,tt,t,num;int v;int n;
scanf("%d",&tt);
while(tt--){
i=0;
scanf("%d%d",&t,&num);
n=num;
memset(c,0,sizeof(c));
memset(w,0,sizeof(w));
while(num--){
scanf("%d%d",&c[i],&w[i]);
i++;
}
/**
背包九讲第一重
*/
memset(af,0,sizeof(af));
for(i=0;i
=c[i];v--){
/**考虑一下,如果v>=0而不是c[i],那af[v-c[i]]该自杀了*/
/**精髓如下式*/
af[v]=af[v]>(af[v-c[i]]+w[i])?af[v]:(af[v-c[i]]+w[i]);
}
}
printf("%lld\n",af[t]);//最后注意潇洒的用 lld格式输出哦
}
return 0;
}