【HDU 3949】 XOR|线性基
2016-03-25 15:10
393 查看
忘记把调试信息去掉 不是第一次犯这种情况啦。。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
const int MAXN = 10000+10;
LL f[MAXN];
int n,m,tot,ok;
void gauss()
{
tot=0;ok=0;
for(LL i=(1ll<<62);i>=1;i>>=1)
{
bool is=false;
for(int j=tot+1;j<=n;j++)
if( (f[j]&i)!=0ll)
{
is=true;
swap(f[j],f[++tot]);
break;
}
if(is)
for(int j=1;j<=n;j++)
if(j!=tot && (f[j]&i)!=0ll)
f[j]^=f[tot];
}
if(n!=tot) ok=1;
}
LL q(LL x)
{
x-=ok;
if(x==0) return 0;
if(x>=(1ll<<tot)) return -1ll;
LL ans=0;
for(int i=0;i<tot;i++)
if(x&(1ll<<i))
ans^=f[tot-i];
return ans;
}
int main()
{
int T;cin>>T;
for(int i=1;i<=T;i++)
{
printf("Case #%d:\n",i);
scanf("%d",&n);
for(int j=1;j<=n;j++) scanf("%lld",&f[j]);
gauss();
scanf("%d",&m);
for(int j=1;j<=m;j++)
{
LL x;scanf("%lld",&x);
printf("%lld\n",q(x));
}
}
return 0;
}
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
const int MAXN = 10000+10;
LL f[MAXN];
int n,m,tot,ok;
void gauss()
{
tot=0;ok=0;
for(LL i=(1ll<<62);i>=1;i>>=1)
{
bool is=false;
for(int j=tot+1;j<=n;j++)
if( (f[j]&i)!=0ll)
{
is=true;
swap(f[j],f[++tot]);
break;
}
if(is)
for(int j=1;j<=n;j++)
if(j!=tot && (f[j]&i)!=0ll)
f[j]^=f[tot];
}
if(n!=tot) ok=1;
}
LL q(LL x)
{
x-=ok;
if(x==0) return 0;
if(x>=(1ll<<tot)) return -1ll;
LL ans=0;
for(int i=0;i<tot;i++)
if(x&(1ll<<i))
ans^=f[tot-i];
return ans;
}
int main()
{
int T;cin>>T;
for(int i=1;i<=T;i++)
{
printf("Case #%d:\n",i);
scanf("%d",&n);
for(int j=1;j<=n;j++) scanf("%lld",&f[j]);
gauss();
scanf("%d",&m);
for(int j=1;j<=m;j++)
{
LL x;scanf("%lld",&x);
printf("%lld\n",q(x));
}
}
return 0;
}
相关文章推荐
- 安装sphinx的心得和错误处理
- Runtime.addShutdownHook用法
- Dubbo学习(六):多注册中心
- NRF24L01的使用方法
- JavaScript面向对象编程(继承实现方式)
- java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!
- 大型网站技术架构PDF阅读笔记(一):
- IntelliJ IDEA 编译时报错:“编码GBK的不可映射字符”,"未结束的字符串字面值"和非法的类型开始
- ViewPager Transform 使用详解
- Linux下套接字详解(十)---epoll模式下的IO多路复用服务器
- Java Socket
- unity工具IGamesTools之批量生成帧动画
- 《C和指针》读书笔记(一)
- 【长篇高能】ReactiveCocoa 和 MVVM 入门
- 我为何选择tcl而不是bash来编写日常的自动化脚本
- HTML标签-列表
- 【慕课笔记】1-7 初涉MYSQL—操作数据库
- MFC-ComBox控件用法
- SQL2005查看死锁存储过程sp_who_lock
- Java二叉树按层次遍历,换行输出