题目:http://noi.openjudge.cn/ch0206/2989/
分析:普通背包..
代码:
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int Tmax=105;
int n,k,f[Tmax][Tmax];
int main()
{
int i,j,a;
scanf("%d%d",&n,&k);
memset(f,-1,sizeof(f));
f[1][0]=0;
for(i=1;i<=n;i++)
{
memcpy(f[i+1],f[i],sizeof(f[i]));
scanf("%d",&a);
for(j=0;j<k;j++)
if(f[i][j]>=0)
f[i+1][(j+a)%k]=max(f[i+1][(j+a)%k],f[i][j]+a);
}
printf("%d",f[n+1][0]);
return 0;
}