bzoj 2844 子集异或和名次
感谢:
http://blog.sina.cn/dpool/blog/s/blog_76f6777d0101d0mr.html
的讲解(特别是2^(n-m)的说明)。
1 /************************************************************** 2 Problem: 2844 3 User: idy002 4 Language: C++ 5 Result: Accepted 6 Time:308 ms 7 Memory:2052 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <iostream> 12 #define Mod 10086 13 #define N 100010 14 using namespace std; 15 16 int n, m, q; 17 int aa[N], bit[N]; 18 19 void gauss() { 20 int i=0; 21 for( int b=30; b>=0; b-- ) { 22 for( int j=i; j<n; j++ ) 23 if( (aa[j]>>b)&1 ) { 24 swap( aa[j], aa[i] ); 25 break; 26 } 27 if( (aa[i]>>b)&1 ) { 28 for( int j=i+1; j<n; j++ ) 29 if( (aa[j]>>b)&1 ) 30 aa[j] ^= aa[i]; 31 bit[i] = b; 32 i++; 33 } 34 } 35 m = i; 36 for( int i=0; i<m; i++ ) 37 for( int j=i-1; j>=0; j-- ) 38 if( (aa[j]>>bit[i])&1 ) 39 aa[j] ^= aa[i]; 40 } 41 int mpow( int a, int b ) { 42 int rt; 43 for( rt=1; b; b>>=1,a=(a*a)%Mod ) 44 if( b&1 ) rt=(rt*a)%Mod; 45 return rt; 46 } 47 int main() { 48 scanf( "%d", &n ); 49 for( int i=0; i<n; i++ ) 50 scanf( "%d", aa+i ); 51 scanf( "%d", &q ); 52 gauss(); 53 int cur = 0; 54 int rank = (q==0?0:1); 55 for( int i=0; i<m; i++ ) { 56 if( (cur^aa[i])<q ) { 57 cur ^= aa[i]; 58 rank = (rank + (1<<(m-1-i))%Mod) % Mod; 59 } 60 } 61 rank = (rank*mpow(2,n-m)+1) % Mod; 62 printf( "%d\n", rank ); 63 }
View Code
转载于:https://www.cnblogs.com/idy002/p/4524878.html
bzoj 2844 子集异或和名次相关推荐
- bzoj 2844: albus就是要第一个出场 高斯消元
LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异 ...
- [BZOJ 2844] albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 2316 Solved: 964 [Submit][Statu ...
- BZOJ 2844 | HYSBZ - 2844albus就是要第一个出场——线性基
[题目描述] BZOJ 2844 | HYSBZ - 2844albus [题目分析] 题目的意思大概是给一个数列,他有2n个子集,每个子集的元素的异或和构成新的一个数列,排序后问数字Q在这个序列里面 ...
- 【BZOJ 4671】异或图 【斯特林反演】【线性基】【贝尔数复杂度】
传送门 题意:定义两个图的异或的边集为在两张图中恰出现一次的边.给sss张nnn个点的图的集合,求异或和为连通图的子集数. s≤60,n≤10s \leq 60,n \leq 10s≤60,n≤10 ...
- bzoj 2844: albus就是要第一个出场(线性基)
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 1635 Solved: 680 [Submit][Statu ...
- BZOJ.4888.[TJOI2017]异或和(树状数组)
BZOJ 洛谷 \(Description\) 求所有区间和的异或和. \(n\leq 10^5,\ \sum a_i\leq 10^6\). \(Solution\) 这样的题还是要先考虑按位做. ...
- [BZOJ 2844]albus就是要第一个出场
Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2S定义为S 所有子 集构成的集合.定义映射 f ...
- 【BZOJ 2844】 albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 436 Solved: 190 [Submit][Status ...
- bzoj 2844 albus就是要第一个出场
2844: albus就是要第一个出场 Time Limit: 6 Sec Memory Limit: 128 MB Submit: 1402 Solved: 593 [Submit][Statu ...
最新文章
- 二.Sql语言的分类及运算符
- 蛤蟆 Oracle,47.蛤蟆笔记go——go连接Oracle
- Git 别名(分布式版本控制系统)
- nginx学习之详细安装篇(二)
- (十八)其他数据库对象,视图,序列
- 也论不使用第三个变量交换两个变量的值[C#]
- java jdk下载_jdk1.7下载|Java Development Kit (JDK) 下载「64位」-太平洋下载中心
- Python压缩解压–zipfile
- 系统分析与设计方法---需求分析与软件设计
- python微博数据分析_用python处理微博JSON数据范例
- linux gpt转mbr命令,linux GPT转mbr
- UWB PDOA brief introduction
- Mysql 第二章 数据库 DML和DQL
- 【力扣(LeetCode)】【C/C++】【19.删除链表的倒数第 N 个结点】
- oracle从入门到跑路
- Android Studio 实战干货例程
- 好用的磁盘清理软件Disk Diet for mac安装教程及功能介绍
- 网络安全论文:浅析图书馆的网络安全
- 常见信道通频带、带宽及信息传输速率
- 淘宝双十一喵果总动员一共多少级?喵果总动员什么时候兑换红包
热门文章
- 教你10分钟内在Windows上完成Rails开发环境的安装和配置
- git reset简介
- 编程小问题系列(1)——XAML文件不支持中文
- SplitContainer.SplitterDistance属性值设置应注意的与FixedPanel有关
- 【note】PAT甲级题目中的单词整理
- 如何将Sublime Text中的代码以彩色高亮形式复制到博客或word文档里
- 分布式时序数据库InfluxDB
- HTTP Status 404 -(tomcat,springmvc,ModelAndView)
- HDU-3466-Proud Merchants
- Fragment懒加载(三)