【bzoj2844】albus就是要第一个出场 高斯消元
2016-05-19 10:27
363 查看
首先预处理出线性基,最多32个有用的数和一堆0
依次看每一位,计算卡上界的数的个数
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iostream>
#define maxn 100010
#define mod 10086
using namespace std;
int a[maxn],c[32];
int n,ans;
int T;
int gaosixiaoyuan()
{
int k=1;
for (int i=31;i>=0;i--)
{
int now=k;
for (;now<=n;now++) if (a[now]&(1<<i)) break;
if (now==n+1) continue;
swap(a[now],a[k]);
for (int j=1;j<=n;j++) if (j!=k && (a[j]&(1<<i))) a[j]^=a[k];
c[i]=k++;
}
return k-1;
}
int power(int x,int y)
{
int ans=1;
while (y)
{
if (y&1) ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
scanf("%d",&T);
int cnt=gaosixiaoyuan();
for (int i=31;i>=0;i--)
if (c[i] && (T&(1<<i))) T^=a[c[i]],ans=(ans+power(2,n-c[i]))%mod;
printf("%d\n",(ans+1)%mod);
return 0;
}
依次看每一位,计算卡上界的数的个数
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iostream>
#define maxn 100010
#define mod 10086
using namespace std;
int a[maxn],c[32];
int n,ans;
int T;
int gaosixiaoyuan()
{
int k=1;
for (int i=31;i>=0;i--)
{
int now=k;
for (;now<=n;now++) if (a[now]&(1<<i)) break;
if (now==n+1) continue;
swap(a[now],a[k]);
for (int j=1;j<=n;j++) if (j!=k && (a[j]&(1<<i))) a[j]^=a[k];
c[i]=k++;
}
return k-1;
}
int power(int x,int y)
{
int ans=1;
while (y)
{
if (y&1) ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
scanf("%d",&T);
int cnt=gaosixiaoyuan();
for (int i=31;i>=0;i--)
if (c[i] && (T&(1<<i))) T^=a[c[i]],ans=(ans+power(2,n-c[i]))%mod;
printf("%d\n",(ans+1)%mod);
return 0;
}
相关文章推荐
- oracle(行转列)中有关case和decode的用法及比较
- android动画之初学
- UI基础 获取当前屏幕显示的viewcontroller
- hive中的NULL(hive空值处理)
- hive中的NULL(hive空值处理)
- iOS计算文字高度
- 淘宝FastJson使用
- Java数组的12个常用方法
- bigDecimal使用方法详解(转载)
- Linux Debian 上安装 JDK7
- c++中类中私有成员的调用?
- Java时间函数整理
- Spring 切入点配置
- oracle的clob字段不为空的判断
- 349. Intersection of Two Arrays[][
- 欢迎使用CSDN-markdown编辑器
- JS中的BOM和DOM
- ios 7 statusbar 状态栏 跟随navigationbar的颜色而改变
- iOS开发-ios7下拉刷新,上提加载快速集成
- java获取10以内的两组不同随机数(摸牌)