bzoj3105 新Nim遊戲 線性基 高斯消元

2021-08-14 09:06:11 字數 550 閱讀 2916

解題思路:

由於nim遊戲先手必勝的條件是每堆石子xor和不為0,那麼我們要求的即是:剩下最多的石子,且其不存在乙個非空子集異或和為0。即求解極大線性無關組。。。

證明是個擬陣(不會證……)

因此只要把a[i]從大到小排序,依次貪心的新增到當前集合就可以了,若其可以成為乙個基則剩下,否則拿走。(有點想kruskal啊)

關於高斯消元o(

30n) 求線性無關組的方法,可以看莫濤的《xor方程組》。

#include

#define ll long long

using namespace std;

int getint()

const

int n=105;

int n,a[n],base[30];

ll ans;

bool cmp(const

int &a,const

int &b)

int main()

}if(cur)ans-=a[i];

}cout0;}

BZOJ3105 新Nim遊戲(線性基)

bzoj 傳統的nim遊戲是這樣的 有一些火柴堆,每堆都有若干根火柴 不同堆的火柴數量可以不同 兩個遊戲者輪流操作,每次可以選乙個火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同時從超過一堆火柴中拿。拿走最後一根火柴的遊戲者勝利。本題的遊戲稍微有些不同 在第乙個回合中,第乙個遊戲者可...

CQOI2013 新nim遊戲題解

傳統的nim遊戲是這樣的 有一些火柴堆,每堆都有若干根火柴 不同堆的火柴數量可以不同 兩個遊戲者輪流操作,每次可以選乙個火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同時從超過一堆火柴中拿。拿走最後一根火柴的遊戲者勝利。本題的遊戲稍微有些不同 在第乙個回合中,第乙個遊戲者可以直接拿走...

GDOI2016模擬8 21新Nim遊戲

題目 傳統的nim遊戲是這樣的 有一些火柴堆,每堆都有若干根火柴 不同堆的火柴數量可以不同 兩個遊戲者輪流操作,每次可以選乙個火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同時從超過一堆火柴中拿。拿走最後一根火柴的遊戲者勝利。本題的遊戲稍微有些不同 在第乙個回合中,第乙個遊戲者可以直...