BZOJ2844 albus就是要第一个出场
2016-03-01 15:13
218 查看
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2844
这题貌似HDU上有一道差不多的题,不过我没做过,也就没管了。
首先讲一个线性基的东西,大概就是这样:
View Code
这题貌似HDU上有一道差不多的题,不过我没做过,也就没管了。
首先讲一个线性基的东西,大概就是这样:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=100010; const int mod=10086; inline int in(){ int x=0;char ch=getchar(); while(ch<'0' || ch>'9') ch=getchar(); while(ch>='0' && ch<='9') x=10*x+ch-'0',ch=getchar(); return x; } int n,m,k; int a[maxn],b[maxn]; void gauss(){ k=n; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++) if(a[j]>a[i]) swap(a[i],a[j]); if(!a[i]){k=i-1;break;} for(int j=30;j>=0;j--) if((a[i]>>j)&1){ b[i]=j; for(int x=1;x<=n;x++) if(x!=i && (a[x]>>j)&1) a[x]^=a[i]; break; } } } inline int power(int x,int y){ int t=1; for(;y;y>>=1,x=x*x%mod) if(y&1) t=t*x%mod; return t; } int main(){ #ifndef ONLINE_JUDGE freopen("2844.in","r",stdin); freopen("2844.out","w",stdout); #endif n=in(); for(int i=1;i<=n;i++) a[i]=in(); m=in(); gauss(); int ans=1; for(int i=1;i<=k;i++) if((m>>b[i])&1){ m^=a[i]; ans=(ans+power(2,n-i))%mod; } printf("%d",ans); return 0; }
View Code
相关文章推荐
- QT中如何实现将textEdit中的内容完全存入txt文本中包括换行
- ExtJS入门之二 事件
- AngularJS 数据绑定
- trayIcon的使用
- 模式识别相似性测度距离计算---几种距离对比
- python笔记
- Yii初学者必看-yii 表单验证规则
- 网关支付、银联代扣通道、快捷支付、银行卡支付等网上常见支付方式接口说明
- PullToRefreshListView 源码学习
- AngularJS 数据绑定
- 面向对象设计原则
- [嵌入式开发板]iTOP-4412开发板linux 系统存储空间的修改
- Memcached 工作原理
- iOS 播放音效
- 整数因子分解
- MATLAB 删除元胞数组中空元素
- 命令行获取本机保存的无线密码
- (五)外观模式-代码实现
- ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL
- mvn多模块开发消除重复依赖造成的打包失败