poj1014 hdu1059 Dividing 多重背包

2014-11-24 12:08:26 · 作者: · 浏览: 4

有价值为1~6的宝物各num[i]个,求是否能分成价值相等的两部分。


#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #define inf 0x3f3f3f3f #define ll long long #define mod 1000000007 using namespace std; int dp[120010],num[10],v; void pack01(int c,int w) { for(int i=v;i>=c;i--) dp[i]=max(dp[i],dp[i-c]+w); } void packall(int c,int w) { for(int i=c;i<=v;i++) dp[i]=max(dp[i],dp[i-c]+w); } void mulpack(int c,int w,int n) { if(c*n>=v) packall(c,w); else { int i=1; while(i