#include<bits/stdc++.h> using namespace std; const int maxn=105; int dp[2*maxn]; struct node{int w,v;}a[maxn]; bool cmp(node a,node b) { if(a.v==b.v) return a.w>b.w; return a.v>b.v; } int main() { int n,m,h,i,j; while(scanf("%d",&n)!=EOF&&n) { scanf("%d%d",&m,&h); memset(dp,0,sizeof(dp)); for(i=0;i<n;i++) scanf("%d%d",&a[i].w,&a[i].v); sort(a,a+n,cmp); if(!h) { for(i=0;i<n;i++) for(j=m;j>=a[i].w;j--) dp[j]=max(dp[j],dp[j-a[i].w]+a[i].v); printf("%d\n",dp[m]); } else { for(i=1;i<n;i++) for(j=m+h-1;j>=a[i].w;j--) dp[j]=max(dp[j],dp[j-a[i].w]+a[i].v); printf("%d\n",dp[m+h-1]+a[0].v); } } return 0; }
TaoTao要吃鸡 贪心+dp
最新推荐文章于 2022-02-25 23:27:47 发布