poj 1276 (完全背包二进制转化01背包)

来源:互联网 发布:js video 播放监控 编辑:程序博客网 时间:2024/06/07 17:11
#include<cstdio>#include<cstring>#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int dp[100010];int v[1250],m[1250];int main(){int col,n;while(~scanf("%d%d",&col,&n)){for(int i=0;i<n;i++)scanf("%d%d",&m[i],&v[i]);memset(dp,0,sizeof(dp));for(int i=0;i<n;i++){int num=m[i];for(int k=1;num>0;k<<=1){int mul=MIN(k,num);for(int j=col;j>=mul*v[i];j--)dp[j]=MAX(dp[j],dp[j-mul*v[i]]+mul*v[i]);num-=mul;}}printf("%d\n",dp[col]);}} 

0 0
原创粉丝点击