题目 P1926 小书童——刷题大军
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=14,R=205;
int dp1[R],dp2[R],tv[N],tw[N],fv[N],n,m,k,rt;
bool check(int m1){
memset(dp1,0,sizeof(dp1));
for(int i=1;i<=m;i++){
for(int j=m1;j>=tw[i];j--){
dp1[j]=max(dp1[j],dp1[j-tw[i]]+tv[i]);
}
}
return dp1[m1]>=k;
}
int dp_s(){
int l=1,r=rt;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)) r=mid-1;
else l=mid+1;
}
return l;
}
int ans;
int main(){
// freopen("P1926_1.in","r",stdin);
scanf("%d%d%d%d",&n,&m,&k,&rt);
for(int i=1;i<=n;i++) scanf("%d",&fv[i]);
for(int i=1;i<=m;i++) scanf("%d",&tw[i]);
for(int i=1;i<=m;i++) scanf("%d",&tv[i]);
m=rt;
m-=dp_s();
sort(fv+1,fv+1+n);
for(int i=1;i<=n;i++){
if(m<fv[i]) break;
else m-=fv[i],ans++;
}
printf("%d",ans);
return 0;
}
样例是in::
3 4 20 100
25 30 50
10 15 40 40
5 5 10 15
out::
1
开了O2会AC,不开O2 0分,求助万能谷民讲解一下为什么我的程序是好氧菌(bushi