hdu_2159_FATE(完全揹包)

題目連接:hdu_2159_FATE

題意:完全揹包的題意

題解:把殺敵數看成揹包的容量,維護一個經驗的最大值,我是多開一維來記錄最大的忍耐度,當然你也可以直接開一位,並記錄忍耐度,最後掃一遍

#include<cstdio>
#include<cstring>
#define F(i,a,b) for(int i=a;i<=b;i++)
inline void up(int &x,int y){if(x<y)x=y;}

int n,m,k,s,a[111],b[111],dp[111][111];

int main(){
	while(~scanf("%d%d%d%d",&n,&m,&k,&s)){
		memset(dp,0,sizeof(dp));
		F(i,1,k)scanf("%d%d",a+i,b+i);
		F(i,1,k)F(j,1,s)F(kc,0,m-b[i])
		up(dp[j][kc],dp[j-1][kc+b[i]]+a[i]);
		int ans=-1;
		for(int i=m;i>=0;i--)if(dp[s][i]>=n){ans=i;break;}
		printf("%d\n",ans);
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章