题目:
http://blog.csdn.net/qq_35786326/article/details/78880084
题意:
求我们应该如何选择,才能使得我们的得分最大
分析:
看过小编的博客的客官,都知道有一题叫竞赛得分(SSL P2292),而这题就是其的退化。只是一个单一的完全背
包,这样就只是考验我们dp背包的熟练度了。
代码(基础小背包,不解释):
#include<cstdio>
#include<iostream>
#define LL long long
using namespace std;
inline LL read(){
LL d=0,f=1;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
return d*f;
}
int f[10001],t[10001],v[10001];
int max(int x,int y)
{
return x>y? x:y;
}
int main()
{
int n,m;
m=read();n=read();
for(int i=1;i<=n;i++)
v[i]=read(),t[i]=read();
for(int i=1;i<=n;i++)
for(int j=t[i];j<=m;j++)
f[j]=max(f[j],f[j-t[i]]+v[i]);
printf("%d",f[m]);
return 0;
}