解題思路:
由於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遊戲是這樣的 有一些火柴堆,每堆都有若干根火柴 不同堆的火柴數量可以不同 兩個遊戲者輪流操作,每次可以選乙個火柴堆拿走若干根火柴。可以只拿一根,也可以拿走整堆火柴,但不能同時從超過一堆火柴中拿。拿走最後一根火柴的遊戲者勝利。本題的遊戲稍微有些不同 在第乙個回合中,第乙個遊戲者可以直...