hdu 5088 Revenge of Nim II(高斯消元)
来源:互联网 发布:mac 用什么三维软件 编辑:程序博客网 时间:2024/06/08 03:06
题意:给定n堆石子,可以取走若干堆,使得剩下的石子可以令先手必败,问是否有这样的方案。
思路:n堆石子异或和为0,那么先手必败。因此,实际上就是在n个数中选一个非空集合,使得这个集合的异或和为0。对于一个数,可以看做是一个m维向量,如果可以挑出一个极大线性无关组,那么就可以表示所有向量,即可以挑出一个集合使得异或值为0,。也就是说,只需要这个矩阵的秩小于n就行了。考虑到ai < 2^40,那么m<=40。然后就高斯消元直接搞就行了。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>#include<queue>#include<stack>#include<set>#include<cmath>#include<vector>#include<bitset>#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFFLL#define eps 1e-6#define pi acos(-1.0)using namespace std;typedef long long ll;const int maxn = 1000 + 10;ll a[maxn];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i = 0;i < n;++i) scanf("%I64d",&a[i]); if(n > 40) { puts("Yes"); continue; } int x = 0; for(ll i = 0;i < 40;++i) { int p = -1; for(ll j = x;j < n;++j) { if((a[j]>>i) & 1) { p = j; break; } } if(p == -1) continue; swap(a[x],a[p]); for(int j = x + 1;j < n;++j) if((a[j]>>i) & 1) a[j] ^= a[x]; x++; } int cnt = 0; for(int i = 0;i < n;++i) if(a[i]) cnt++; if(cnt < n) puts("Yes"); else puts("No"); } return 0;}
0 0
- 【HDU】5088 Revenge of Nim II 高斯消元
- 【HDU】 5088 Revenge of Nim II 高斯消元
- hdu 5088 Revenge of Nim II(高斯消元)
- hdu 5088 Revenge of Nim II(高斯消元)
- HDU - 5088 Revenge of Nim II
- 【HDU 5088】Revenge of Nim II
- HDU 5088 Revenge of Nim II
- HDU 5088 Revenge of Nim II (高斯消元??)
- hdu 5088 Revenge of Nim II(BestCoder Round #16)
- HDU 5088 Revenge of Nim II(尼姆博弈,高斯消元)
- HDU 5088 Revenge of Nim II 高斯消元(异或,矩阵秩)
- hdu 4994 - Revenge of Nim
- HDOJ 5088 Revenge of Nim II 位运算
- HDU 4994 Revenge of Nim (博弈)
- hdu 4994 Revenge of Nim 博弈
- hdu 4994 Revenge of Nim (博弈)
- hdu 4994 Revenge of Nim(博弈)
- hdu 4994 Revenge of Nim(博弈)
- Android 栈简析
- maven的学习与使用
- linux下的关机与重启方法总结【转】
- |对话框与对话框数据传递|
- ID3D11RasterizerState,ID3D11DepthStencilView,ID3D11DepthStencilState
- hdu 5088 Revenge of Nim II(高斯消元)
- 求字母的个数
- git提交到github
- .net读取Excel批注
- NSString与NSMutableString的常用操作
- |对话框窗口切分|
- Java程序员笔试面试之String5
- 第十周项目2:解密字符
- 【传统网络】交换机三种端口模式Access、Hybrid和Trunk的报文处理对比