Time:2016.08.29
Author:xiaoyimi
转载注明出处谢谢


传送门
喜闻乐见的线性基乱搞题
如果n个数消出m个线性基,那么这n个数能异或出的值有2m2^m种
这个很显然,但还有个很神奇的性质
这2m2^m种值各会出现2n−m2^{n-m}
这就很简单了是不是啊
枚举x的每个二进制位
sum[i]表示第1-i位上的线性基个数,m表示n个数总共的线性基个数
如果当前位i为1,那么ans就要加上2n−m+sum[i−1]2^{n-m+sum[i-1]}
第i位上的线性基不能算,所以从i-1位上开始算起,共2sum[i−1]2^{sum[i-1]}种线性基,每种2n−m2^{n-m}个
复杂度就是求线性基的复杂度O(31n)O(31n)
代码:

#include<cstdio>
#define mo 10086
#define M 100003
using namespace std;
int n,x,sum;
int a[M],lb[32];
int qr(int x,int y)
{int t=1;for (;y;y>>=1,x=x*x%mo)if (y&1) t=t*x%mo;return t;
}
int in()
{int t=0;char ch=getchar();while (ch<'0'||ch>'9') ch=getchar();while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar();return t;
}
main()
{n=in(); for (int i=1;i<=n;++i) a[i]=in();x=in();for (int j=1;j<=n;++j)for (int i=30;i>=0;--i)if (a[j]>>i&1)if (!lb[i]) {lb[i]=a[j];++sum;break;}elsea[j]^=lb[i];int ans=1,tt=sum;for (int i=30;i>=0;--i)if (lb[i]){--sum;if (x>>i&1)ans=(ans+qr(2,sum+n-tt))%mo;}printf("%d\n",ans);
}

【BZOJ2844】albus就是要第一个出场,线性基相关推荐

  1. BZOJ2844: albus就是要第一个出场(线性基)

    Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 2054  Solved: 850 [Submit][Status][Discuss] Descript ...

  2. 【BZOJ2844】albus就是要第一个出场——线性基

    Time Limit: 6 Sec Memory Limit: 128 MB Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x &l ...

  3. 【BZOJ2844】albus就是要第一个出场 线性基 高斯消元

    #include <stdio.h> int main() {puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csdn.ne ...

  4. [BZOJ2844]albus就是要第一个出场(线性基)

    题目: 我是超链接 题解: 先不考虑重复数字的问题,如果要求数字Q的出现位置的话,首先一个比较直观的想法是,如果能求出这样一组基底,它从小到大排序以后可以满足:设只选i向量构造出来的数字为R,那么1. ...

  5. bzoj2844 albus就是要第一个出场(线性基【询问排名)

    题目链接 分析: 这道题是hdu3949的逆运算(可能题面有点难懂) 既然我们能够知道排名是第k的数是多少 就可以直接二分,变成判定性问题 当然,这道题还有其他解法: 因为是子集异或和,可以考虑用线性 ...

  6. 【bzoj2844 albus就是要第一个出场】

    题意:给定一个n个数的集合S和一个数x,求x在S的2n2n个子集从小到大的异或和序列中最早出现的位置 根据性质每一个数字出现的次数是相同的都是2^(n-cnt)个,cnt是线性基中元素得个数 #inc ...

  7. BZOJ2844 albus就是要第一个出场

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2844 这题貌似HDU上有一道差不多的题,不过我没做过,也就没管了. 首先讲一个线性基的东西 ...

  8. [BZOJ2844]albus就是要第一个出场

    题目 传送门 to BZOJ 传送门 to VJ 思路 看到异或,想到线性基.再仔细观察一下,好像每个元素出现的次数都是一样的耶! 我们有两种证明方法.其一是,考虑某个异或和出现次数超过一的原因:⨁c ...

  9. BZOJ 2844 | HYSBZ - 2844albus就是要第一个出场——线性基

    [题目描述] BZOJ 2844 | HYSBZ - 2844albus [题目分析] 题目的意思大概是给一个数列,他有2n个子集,每个子集的元素的异或和构成新的一个数列,排序后问数字Q在这个序列里面 ...

  10. bzoj 2844: albus就是要第一个出场(线性基)

    2844: albus就是要第一个出场 Time Limit: 6 Sec  Memory Limit: 128 MB Submit: 1635  Solved: 680 [Submit][Statu ...

最新文章

  1. [软件推荐]电子日记本EDiary,记下您 的每一天
  2. 实验结果报告与实验总结_教科版科学四年级上册实验报告
  3. js删除mysql记录_(DELETEUPDATE)修改、删除数据记录_MySQL
  4. python之字符编码(四)
  5. vscode新建文件的快捷键_Mac怎么创建txt文件?如何设置新建txt的快捷键?
  6. VS调用tensorflow模型记录
  7. javascript 容错处理代码【屏蔽js错误】
  8. paip.提升用户体验------c++ 拖曳使用总结..
  9. wpe手机中文汉化版下载_wpe中文版
  10. python 调用bat失败_死机、卡顿、蓝屏,Python部门的老江湖告诉我的一些超级变态代码...
  11. RBF神经网络算法分析与应用(适合快速入门实战)
  12. 视频直播 linux 推流,linux rtmp服务器搭建推流
  13. 联想k50+开发者模式+linux,联想 K50-T5中文Recovery刷机教程
  14. php 签名 验签 pkcs8,PHP和Java的RSA签名和验签
  15. mysql 主从1146_MySQL5.7主从复制slave报Last_Errno: 1146错误解决
  16. 大数据工程师、BI工程师、数据库工程师什么区别?
  17. 自动备份android,Android自动备份错误
  18. SQL 语句中 where 条件后 写上 1=1 是什么意思!
  19. Mac OS X: 再续〉安全警告,病毒就在你身边
  20. python之旅六【第六篇】模块

热门文章

  1. 区块链学习笔记:D03 区块链在各行业领域的应用(一)
  2. 七年级计算机考试知识点,七年级语文期中考试复习知识点整理
  3. Think in Java第四版 读书笔记10 第16章 数组
  4. 参加计算机俱乐部的英语怎么说,参加象棋俱乐部用英语怎么说
  5. selenium自动化案例(一)B站专栏爬虫
  6. (组合数学笔记)Pólya计数理论_Part.1_群的基本概念
  7. labelImg重新开启工具箱(栏)
  8. 再谈注意力机制 | 运用强化学习实现目标特征提取
  9. python读取图片并储存为CSV文件
  10. 今天学到的几个有用的awk命令用法