BJOI竟然出这么简单的题,,夭寿了。
第一眼被吓了一跳。
第二眼,哇数据好小,辣鸡背包。
对于每个东西将要求数量排序,然后背包即可。
#include<bits/stdc++.h>
using namespace std;
#define in read()
int in{
int cnt=0,f=1;char ch=0;
while(!isdigit(ch)){
ch=getchar();if(ch=='-')f=-1;
}
while(isdigit(ch)){
cnt=cnt*10+ch-48;
ch=getchar();
}return cnt*f;
}
int s,n,m;
int f[20003];
int a[103][103];
int main(){
s=in;n=in;m=in;
for(int i=1;i<=s;i++){
for(int j=1;j<=n;j++)a[j][i]=in;
}
for(int i=1;i<=n;i++)sort(a[i]+1,a[i]+s+1);
for(int i=1;i<=n;i++)
for(int j=m;j>=0;j--){
for(int k=1;k<=s;k++){
if(j>a[i][k]*2)f[j]=max(f[j],f[j-2*a[i][k]-1]+k*i);
}
}int ans=0;for(int i=1;i<=m;i++)ans=max(ans,f[i]);cout<<ans;
return 0;
}