首页 > 代码库 > 【BZOJ】【2844】albus就是要第一个出场
【BZOJ】【2844】albus就是要第一个出场
高斯消元解XOR方程组
srO ZYF Orz
膜拜ZYF……
http://www.cnblogs.com/zyfzyf/p/4232100.html1 /************************************************************** 2 Problem: 2844 3 User: Tunix 4 Language: C++ 5 Result: Accepted 6 Time:252 ms 7 Memory:2052 kb 8 ****************************************************************/ 9 10 //BZOJ 284411 //srO ZYF Orz12 #include<cstdio>13 #include<cstring>14 #include<cstdlib>15 #include<iostream>16 #include<algorithm>17 #define rep(i,n) for(int i=0;i<n;++i)18 #define F(i,j,n) for(int i=j;i<=n;++i)19 #define D(i,j,n) for(int i=j;i>=n;--i)20 using namespace std;21 void read(int &v){22 v=0; int sign=1; char ch=getchar();23 while(ch<‘0‘||ch>‘9‘){ if (ch==‘-‘) sign=-1; ch=getchar();}24 while(ch>=‘0‘&&ch<=‘9‘){ v=v*10+ch-‘0‘; ch=getchar();}25 v*=sign;26 }27 /******************tamplate*********************/28 const int N=100010,MOD=10086;29 int n,m,k,a[N],b[N];30 void gauss(){31 k=n;32 F(i,1,n){33 F(j,i+1,n) if (a[j]>a[i]) swap(a[i],a[j]);34 if (!a[i]) {k=i-1; break;}35 D(j,30,0) if (a[i]>>j & 1){36 b[i]=j;37 F(x,1,n) if (x!=i && a[x]>>j&1) a[x]^=a[i];38 break;39 }40 }41 }42 inline int pow(int x,int y){43 int t=1;44 for(;y;y>>=1,x=x*x%MOD)45 if (y&1) t=t*x%MOD;46 return t;47 }48 49 int main(){50 read(n);51 F(i,1,n) read(a[i]);52 read(m);53 gauss();54 int ans=1;55 F(i,1,k) if (m>>b[i]&1){56 m^=a[i];57 ans=(ans+pow(2,n-i))%MOD;58 }59 printf("%d\n",ans);60 return 0;61 }62
【BZOJ】【2844】albus就是要第一个出场
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。