http://www.luogu.org/problem/show?pid=1855
题目描述有点神奇,kkk很强势。
普通的二维01背包,权当复习一下
1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace std; 8 const int mxn=210; 9 int f[mxn][mxn]; 10 int w[mxn],t[mxn]; 11 int n,M,T; 12 int read(){ 13 int x=0,f=1;char ch=getchar(); 14 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 15 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 16 return x*f; 17 } 18 void dp(){ 19 int i,j,k; 20 for(i=1;i<=n;i++){ 21 for(j=M;j>=w[i];j--){ 22 for(k=T;k>=t[i];k--){ 23 f[j][k]=max(f[j][k],f[j-w[i]][k-t[i]]+1); 24 } 25 } 26 } 27 return; 28 } 29 int main(){ 30 n=read();M=read();T=read(); 31 int i,j; 32 for(i=1;i<=n;i++) 33 w[i]=read(),t[i]=read(); 34 dp(); 35 printf("%d ",f[M][T]); 36 return 0; 37 }