hdu 5000 共存問題 揹包

2021-06-26 08:36:55 字數 928 閱讀 2115

每只羊有n個屬性

下面n個數字表示每個屬性的值範圍為[ 0, t[i] ]

對於羊圈裡的a羊和b羊,若a羊的每個屬性都》=b羊,則a羊會殺死b羊。

問羊圈裡最多存活多少隻羊。

sum相同的羊不會互相殺死。

sum不同的羊不會重合。(

我們設a羊sum = x,b羊sum = y,若a,b羊能共存,但不會把ab同時放到羊圈裡。

因為一定存在乙隻羊c ,sum = x,且c和b不能共存,既然不能共存,則我們放入c羊是不會影響答案的。)

sum其實是對稱的,和組合數一樣。所以dp[n][求和(t[i]) / 2] 是最大的。

要推出最大值的時候,每個人的屬性和必然相同,並且這個和必然是所有和 / 2,這樣的話,問題轉化為給n個數字,要組合成sum / 2有多少種方法,就用dp揹包推一遍就可以得解了。

#include #include #include #include #include #include #include #include#include #include using namespace std;

#define rd(x) scanf("%d",&x)

#define rd2(x,y) scanf("%d%d",&x,&y)

#define clr0(x) memset(x,0,sizeof(x))

typedef long long ll;

const int modo = 1e9 + 7;

int s[2004];

int dp[2004][1004];

int main()

sum /= 2;

clr0(dp);

for(int i = 0;i <= s[0];++i)

dp[0][i] = 1;

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

}cout<

HDU 5000 Clone (多重揹包)

題目 題意 有乙個人他可以轉殖自己,但轉殖出來的自己並不完全一樣。對於每兩個自己,a和b,他會看n個屬性,如果b的每一項屬性都比不過a,那麼b就不能存在。每乙個屬性的評分範圍為0 t i 問最多能存在多少個他自己。思路 對於可以同時存在的兩個人,假如有3個屬性 a1 b1 c1 a2 b2 c2 如...

飯卡 HDU(揹包問題)

原題目 電子科大本部食堂的飯卡有一種很詭異的設計,即在購買之前判斷餘額。如果購買乙個商品之前,卡上的剩餘金額大於或等於5元,就一定可以購買成功 即使購買後卡上餘額為負 否則無法購買 即使金額足夠 所以大家都希望盡量使卡上的餘額最少。某天,食堂中有n種菜 每種菜可購買一次。已知每種菜的 以及卡上的餘額...

HDU 1059 揹包問題

揹包問題 題意 輸入 個整數,分別表示 到 六個數字的個數,問能否組合成兩組,這兩組所有數字的總和相同 include include include include include include include includeusing namespace std const int maxn ...