b lg 搭配購買(並查集 01揹包)

2022-02-24 14:28:26 字數 994 閱讀 9670

有一些雲朵商品,你需要如果商品有搭配關係,則你需要購買具有搭配關係的所有雲朵;

已知你的初始財富以及各物品的價錢與價值,求出最大價值

思路

這題一開始寫的\(o(n^2m)\)的暴力,得分為40pt

#includeusing namespace std;

const int n=1e4+5, w=1e3+5;

int n,m,cap, fa[n], sz[n], f[w];

struct node a[n];

int find(int u)

void merge(int u, int v) else

}bool isconn(int u, int v)

int buy(int u, int& cap)

return tot_val;

}int main()

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

for (int j=cap; j>=a[i].cost; j--)

cout《直接用乙個連通塊的根記錄總的cost、val,讓子節點的cost、val變為0,這樣就省去了buy函式的o(n)的檢查時間

#includeusing namespace std;

const int n=1e4+5, w=1e3+5;

int n,m,cap, fa[n], sz[n], f[w];

struct node a[n], b[n];

int find(int u)

void merge(int u, int v) else

}int main()

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

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

for (int j=cap; j>=b[i].cost; j--)

cout

}

並查集 01揹包 搭配購買

joe覺得雲朵很美,決定去山上的商店買一些雲朵。商店裡有 n 朵雲,雲朵被編號為 1,2,n,並且每朵雲都有乙個價值。但是商店老闆跟他說,一些雲朵要搭配來買才好,所以買一朵雲則與這朵雲有搭配的雲都要買。但是joe的錢有限,所以他希望買的價值越多越好。輸入格式 第 1 行包含三個整數 n,m,w,表示...

P1455 搭配購買 (並查集 01揹包)

題目描述 明天就是母親節了,電腦組的小朋友們在忙碌的課業之餘挖空心思想著該送什麼禮物來表達自己的心意呢?聽說在某個 上有賣雲朵的,小朋友們決定一同前往去看看這種神奇的商品,這個店裡有n朵雲,雲朵已經被老闆編號為1,2,3,n,並且每朵雲都有乙個價值,但是商店的老闆是個很奇怪的人,他會告訴你一些雲朵要...

洛谷P1455 搭配購買(並查集縮點 01揹包)

題目描述 明天就是母親節了,電腦組的小朋友們在忙碌的課業之餘挖空心思想著該送什麼禮物來表達自己的心意呢?聽說在某個 上有賣雲朵的,小朋友們決定一同前往去看看這種神奇的商品,這個店裡有n朵雲,雲朵已經被老闆編號為1,2,3,n,並且每朵雲都有乙個價值,但是商店的老闆是個很奇怪的人,他會告訴你一些雲朵要...