【贪心】【线性基】bzoj2844 albus就是要第一个出场
2024-08-28 16:24:30
引用题解:http://blog.csdn.net/PoPoQQQ/article/details/39829237
注意评论区。
#include<cstdio>
using namespace std;
#define MOD 10086
#define N 100001
int n,a[N],m,base[32],k,real[32],ans,now;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
scanf("%d",&m);
int j;
for(int i=1;i<=n;++i)
{
for(j=31;j>=0;--j)//尝试用所有的线性基去消a[i]
if(((a[i]>>j)&1)&&base[j])
a[i]^=base[j];
if(a[i])//若a[i]不能被以前的线性基所表示(线性无关)
{
for(j=31;j>=0;--j)//把a[i]的剩余部分插入线性基
if(((a[i]>>j)&1)&&(!base[j]))
{
base[j]=a[i];
break;
}
for(int k=31;k>j;--k)//从线性基里把新插入的家伙消掉
if((base[k]>>j)&1)
base[k]^=a[i];
}
}
for(int i=0;i<=31;++i) if(base[i]) real[k++]=base[i];
for(int i=k-1;i>=0;--i)
if((real[i]^now)<=m)
{
now^=real[i];
ans=(ans+(1<<i)%MOD)%MOD;
}
for(int i=0;i<n-k;++i)
ans=(ans<<1)%MOD;
printf("%d\n",(ans+1)%MOD);
return 0;
}
最新文章
- 《DSP using MATLAB》示例Example6.1
- C# DataSet
- 从零开始学node(一): nodejs开发环境的配置
- 拥Bootstrap入怀——模态框(modal)篇
- vector中的erase方法[转+补充]
- noj [1480] 懒惰的风纪委Elaine (多重背包)
- Java Script 字符串操作
- Twisted UDP编程技术
- ansible-host file
- 分频器的Verilog实现
- 使用JavaScript制作页面效果3
- [daily] 内存越界的分析与定位
- Qt: 加入打印支持
- T4学习- 2、创建设计时模板
- 后缀名htm与html的区别
- 657. Judge Route Circle
- Web Api HelpPage
- open方法读写文件
- openwrt下如何只编译uboot
- if、while中变量的作用域问题
热门文章
- 文件格式转换神器-pandoc
- git使用笔记(一)入门
- Codeforces Round #532 (Div. 2) 题解
- 【SPOJ - QTREE2】树链剖分
- 【Foreign】字符串匹配 [KMP]
- 网络流专题练习Day1
- 【BZOJ】1571: [Usaco2009 Open]滑雪课Ski
- 2017年上海金马五校程序设计竞赛:Problem A : STEED Cards (STL全排列函数)
- 【转】cve2014-3153 漏洞之详细分析与利用
- Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown