BZOJ 2460 元素 線性基 貪心

2021-08-08 13:46:22 字數 673 閱讀 1528

線性基是一種特殊的基,它通常會在異或運算中出現,它的意義是:通過原集合s的某乙個最小子集s1使得s1內元素相互異或得到的值域與原集合s相互異或得到的值域相同。

性質:線性基能相互異或得到原集合的所有相互異或得到的值。

線性基是滿足性質1的最小的集合

線性基沒有異或和為0的子集。

題意:n個礦石,第i個礦石有編號num[i]和價值val[i] num[i]<=1e18,val[i]<=1e4,n<=1e3.

問從n個中選出若干個礦石,在這些礦石編號num[i]異或和不為0的情況下,其價值和最大為多少

選出子集的異或和不為0 馬上想到線性基,然後貪心將val從大到小排序後,構造線性基即可.

#include using namespace std;

typedef long long ll;

const int n=2e5+20;

const ll inf=2e16;

struct nodea[n];

bool cmp(node a,node b)

ll mk[110];

int main()

x^=mk[j];//èô×îºóx==0 ôòëµã÷x¿éòôí¨¹ýæäëûêýòì»ò³öà´.

} if(x)

ans+=a[i].val;

} cout<

BZOJ 2460 元素(貪心 線性基)

description 相傳,在遠古時期,位於西方大陸的ma gicl and 上,人們已經掌握了用魔法礦石煉製法杖的技術。那時人們就認識到,乙個法杖的法力取決於使用的礦石。一般地,礦石越多則法力越強,但物極必反 有時,人們為了獲取更強的法力而使用了很多礦石,卻在煉製過程中發現魔法礦石全部消失了,從...

BZOJ2460 元素(貪心,線性基)

bzoj 第一行包含乙個正整數n,表示礦石的種類數。接下來 n行,每行兩個正整數numberi 和 magici,表示這種礦石的元素序號 和魔力值。僅包一行,乙個整數 最大的魔力值 3 1 10 2 20 3 30 由於有 魔法抵消 這一事實,每一種礦石最多使用一塊。如果使用全部三種礦石,由於三者的...

BZOJ 2460 元素 線性基

input 第一行包含乙個正整數n,表示礦石的種類數。接下來 n行,每行兩個正整數numberi 和 magici,表示這種礦石的元素序號 和魔力值。output 僅包一行,乙個整數 最大的魔力值 sample input 3 1 10 2 20 3 30 sample output 50hint ...