BZOJ 2460 元素(貪心 線性基)

2021-08-13 22:02:55 字數 1371 閱讀 9650

description

相傳,在遠古時期,位於西方大陸的ma

gicl

and 上,人們已經掌握了用魔法礦石煉製法杖的技術。那時人們就認識到,乙個法杖的法力取決於使用的礦石。一般地,礦石越多則法力越強,但物極必反:有時,人們為了獲取更強的法力而使用了很多礦石,卻在煉製過程中發現魔法礦石全部消失了,從而無法煉製出法杖,這個現象被稱為「魔法抵消」 。特別地,如果在煉製過程中使用超過一塊同一種礦石,那麼一定會發生「魔法抵消」。 後來,隨著人們認知水平的提高,這個現象得到了很好的解釋。經過了大量的實驗後,著名法師dm

itri

input

第一行包含乙個正整數

n ,表示礦石的種類數。 接下來

n行,每行兩個正整數nu

mber

i 和ma

gici

,表示這種礦石的元素序號和魔力值。(n

≤1000,n

umbe

ri≤10

18,ma

gici

≤104)

output

僅包一行,乙個整數:最大的魔力值

sample input3

1 10

2 20

3 30

sample output

solution

問題轉化為求一組關於序號的極大無關組且組內元素魔力和最大,貪心的礦石按魔力值從大到小排序,然後求線性基即可(貪心的證明需用到擬陣)

code

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

typedef pairp;

const

int inf=0x3f3f3f3f,maxn=1005;

int n;

ll base[66];

struct node

}a[maxn];

int main()

else a[i].num^=base[j];

}printf("%d\n",ans);

}return

0;}

BZOJ 2460 元素 線性基 貪心

線性基是一種特殊的基,它通常會在異或運算中出現,它的意義是 通過原集合s的某乙個最小子集s1使得s1內元素相互異或得到的值域與原集合s相互異或得到的值域相同。性質 線性基能相互異或得到原集合的所有相互異或得到的值。線性基是滿足性質1的最小的集合 線性基沒有異或和為0的子集。題意 n個礦石,第i個礦石...

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 ...