zoukankan      html  css  js  c++  java
  • Cash Machine POJ

    题意:多重背包模型  n种物品 每个m个  问背包容量下最多拿多少 这里要用二进制优化不然会超时

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 const int maxn=100000+10;
     6 int dp[maxn];
     7 int w[500],c[50];
     8 int main(){
     9     
    10     int n,m,maxnum;
    11     while(cin>>maxnum>>n){
    12         int a,b;
    13         int num=1;
    14         for(int i=1;i<=n;i++){
    15             scanf("%d%d",&a,&b);
    16         
    17         for(int j=1;j<=a;j<<=1){
    18            w[num++]=j*b;
    19            a-=j;
    20         }
    21         if(a>0)w[num++]=a*b;
    22     }
    23     memset(dp,0,sizeof(dp));
    24     for(int i=1;i<num;i++)
    25         for(int j=maxnum;j>=w[i];j--){
    26                 if(j-w[i]>=0)
    27                 dp[j]=max(dp[j],dp[j-w[i]]+w[i]);
    28         }
    29     cout<<dp[maxnum]<<endl;
    30     }
    31     }
  • 相关阅读:
    node 第一天
    VUE全局api
    VUE01指令
    位置属性
    dom总结
    animate.css与wow.js制作网站动效
    继承要点
    css3
    linux创建程序启动
    https://www.meitulu.com/ java下载图片
  • 原文地址:https://www.cnblogs.com/ttttttttrx/p/10260531.html
Copyright © 2011-2022 走看看