HDU 1059 多重揹包模板題

2021-08-05 22:40:37 字數 928 閱讀 9058

題意:有價值為1,2,3,4,5,6的物品,每種物品都有一定數量,問這些物品能不能平分成價值相同的兩份;

思路:多重揹包模板題,以價值總額的一半為揹包容量

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define maxn 33000

#define inf 0x3f3f3f3f

#define lmid l,m,rt<<1

#define rmid m+1,r,rt<<1|1

#define ls rt<<1

#define rs rt<<1|1

#define mod 1000000007

#define i64 __int64

#define limit_ull 100000000000000000

using

namespace

std;

int dp[60005];

int a[10];

void dc(int v,int w,int sum)

}else

v-=k;

k*=2;

}k=v;

for(int i=sum;i>=k*w;i--)

}}int main()

if(flag==6)

break;

if(sum%2)

memset(dp,0,sizeof(dp));

sum/=2;

for(int i=1;i<=6;i++)

if(dp[sum]==sum)

HDU 1059 多重揹包

個人覺得,這個可以作為多重揹包的模板使用,其中包括了簡單的0 1揹包和完全揹包,分清楚它們三個的區別。include include define n 60005 define max a,b a b?a b int c n void complete int cost,int weight,int...

hdu 1059 多重揹包

題目的意思 有一堆大理石,按其大小分為1 6 種價值,兩個人想分得的價值相同的大理石,已知每種價值的大理石個數,問是否能讓兩個人分得價值相同的大理石?題目輸入 1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0 題目輸出 collection 1 can t be divided...

hdu1059 多重揹包

這道剛開始都沒想出來。後來發現我以前做了一道和這個完全一樣的題,就是計蒜客的平分娃娃,好菜呀 t t 說的可能有些繁瑣。大佬可以忽略,直接看 一道經典的多重揹包問題,但是會卡時間,用二進位制優化一下就解決了。這裡重點講思路,題目問的如何將一堆彈珠均等對半分,可以先這樣想,乙個彈珠價值6,它的體積也是...