HDU 1059 多重揹包

2021-06-08 11:11:36 字數 533 閱讀 7675

個人覺得,這個可以作為多重揹包的模板使用,其中包括了簡單的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 m)      // 完全揹包, 順序

void zero_one(int cost, int weight, int m)      // 0-1揹包, 逆序

int main()

zero_one(a[i]*i,a[i]*i,sum);}}

if(c[sum]==sum) printf("can be divided.\n");

else   printf("can't be divided.\n");

}  printf("\n");

}system("pauese");

return 0; 

}

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,它的體積也是...

hdu 1059 多重揹包

題意 價值分別為1,2,3,4,5,6的物品個數分別為a 1 a 2 a 3 a 4 a 5 a 6 問能不能分成兩堆價值相等的。解法 轉化成多重揹包 1 include2 include 3 include4 include5 using namespace std 67 int dp 12001...