Spices(線性基 貪心)

2022-10-08 23:27:28 字數 858 閱讀 8714

有\(2^n-1\)個數字,分別是\(1,2,\dots,2^n-1\)。它們具有權值,分別為\(c_1,c_2,\dots,c_\)。

從這些數字中選擇一些數字組成集合\(s\),對於\(1,2,\dots,2^n-1\)中任意乙個數字\(i\),都可以從\(s\)中找到乙個子集,使得子集裡面所有數異或起來為\(i\)。

問:集合\(s\)中所有數之和的最小值為多少?

\(2 \leq n \leq 16\)

線性基模板題。

首先不考慮權值的問題,只考慮集合\(s\)如何得到。這個問題為線性基的基本應用,只需要在插入的過程中,記錄當前元素是否使用了即可。

現在考慮權值,只需要在上面的基礎上,對權值進行排序即可(因為在\(b\)陣列的構造過程中,肯定是優先選擇權值小的數)。

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

typedef long long ll;

typedef pairpii;

const int n = 20;

int n;

pii a[1 << n];

ll b[n];

ll ans;

void ins(int x, ll val) //插入數字,獲取線性基

else x ^= b[i];}}

}int main()

; }

sort(a + 1, a + (1 << n));

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

printf("%lld\n", ans);

return 0;

}

元素 線性基,貪心

有n nn塊石頭,每塊石頭有乙個序號和乙個魔力值,你可以使用任意數量的石頭,但你使用的石頭中任意幾塊異或起來不能為0 00,求可得到的最大總魔力值。貪心顯然我們貪心地將val valva l值更大的放在前面插入到線性基中,因此我們只需要對所以物品按val valva l值降序排序即可,然後線性基基本...

裝備購買 線性基 貪心

裝備購買 solution 貪心 線性基。由於線性基能夠錶出的線性空間和原數表出的線性空間相同,所以只需要在高斯消元求線性基的過程中貪心選取 最低的行 向量 即可。code include include include include include define rg register defi...

bzoj 2115 Xor 線性基 貪心

題目傳送門 這是個通往vjudge的蟲洞 這是個通往bzoj的蟲洞 題目大意 問點 1 到點 n 的最大異或路徑。因為重複走一條邊後,它的貢獻會被消去。所以這條路徑中有貢獻的邊可以看成是一條 1 到 n 的簡單路徑加上若干個環。因此可以找任意一條路徑,然後找出所有環扔進線性基跑出最大異或和。但是找出...