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. h3c交换机端口加入vlan命令_华为交换机批量加入 Vlan 方法
  2. php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)...
  3. 2能不用cuda_cuda学习-1-cufft的使用
  4. mysql log 记录报错 sql语句_MySQL生产库中添加修改表字段引起主从崩溃的问题总结...
  5. 收货详细假地址大全_【肖博数学】考生必看:高中数学三角函数公式大全(史上最全)...
  6. 进入陕西教育行业市场:TurboMail邮件系统与西京大学合作
  7. Java招聘数据统计_拉勾网2019年3月20日招聘数据统计
  8. ora-12154问题处理
  9. 开课吧:什么是包?如何定义包?
  10. 百度离线地图——瓦片地图下载
  11. EML-NET: An Expandable Multi-Layer NETwork for Saliency Prediction【论文笔记】
  12. C#与宇电温控表自定义协议通信实例
  13. Eclipse执行junit测试时出现Errors occurred during the build. Errors running builder 'Integrated External Too
  14. 省钱兄同城跑腿小程序源码uniapp前端模版源码(小程序+APP+H5)
  15. 树莓派 电脑 文件共享 搬移
  16. *dessertpku 1950
  17. 苹果手机隐私分析数据是什么_苹果和谷歌可能是我们在隐私操作系统上的最佳选择...
  18. 3-VIV-Android控件之ImageView
  19. 聊聊身边的嵌入式,自拍神器自拍杆
  20. twitter账号被冻结如何申诉,已成功解冻(我是第一次被冻结,听闻二次冻结会永久冻结)

热门文章

  1. 【经验分享】如何搭建本地MQTT服务器(Windows ),并进行上下行调测
  2. 【奇技淫巧】Android真机调试看不到应用logcat或者应用logcat信息太少的解决方法
  3. python爬取网页版QQ空间,生成词云图、柱状图、折线图(附源码)
  4. 韩顺平php视频笔记47 函数使用
  5. CompSNN: A Lightweight Spiking Neural Network Based on Spatiotemporally Compressive Spike Features
  6. 多维标度法MDS古典解的证明与R语言实现
  7. LeetCode-20:有效的括号
  8. mysql 信号_MySQL
  9. python代码实现文件复制txt文件_工具类(1.1)
  10. matlab icol,Matlab 图像处理相关函数命令大全