博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
albus就是要第一个出场(线性基)
阅读量:5281 次
发布时间:2019-06-14

本文共 1590 字,大约阅读时间需要 5 分钟。

这个题题目描述真怪异……就不能说人话吗……

人话:给定长为n的序列A,定义f(s)为集合s内所有元素异或值,求A的所有子集的f值从小到大排列后,q在其中第一次出现的下标对10086取模的值。

首先不难想到构建线性基。线性基有一个良好的性质!假设这n个数的线性基中有k的数,那么显然有\(2^k\)种异或值。之后,因为线性基是可以看作线性基中本来有的数再加上一堆0,所以每一种异或值应该出现过\(2^{n-k}\)次。

那么我们只需要求出来q在这一堆异或值中的排名。这个我们可以仿照求第k大的操作(鬼知道为啥我hdu过不了),看一下代码吧。

#include
#include
#include
#include
#include
#include
#define rep(i,a,n) for(register int i = a;i <= n;i++)#define per(i,n,a) for(register int i = n;i >= a;i--)#define enter putchar('\n')#define pr pair
#define mp make_pair#define fi first#define sc second#define I inlineusing namespace std;typedef long long ll;const int M = 100005;const int N = 10000005;const int mod = 10086;const double eps = 1e-5; int read(){ int ans = 0,op = 1;char ch = getchar(); while(ch < '0' || ch > '9') {if(ch == '-') op = -1;ch = getchar();} while(ch >='0' && ch <= '9') ans = ans * 10 + ch - '0',ch = getchar(); return ans * op;}int n,a[M],p[60],q,b[60],cnt,tot;int inc(int a,int b) {return (a+b) % mod;}int mul(int a,int b) {return 1ll * (a) * (b) % mod;}int qpow(int a,int b){ int c = 1; while(b) { if(b & 1) c = mul(c,a); a = mul(a,a),b >>= 1; } return c;}void insert(int x){ per(i,30,0) { if(!((x >> i) & 1)) continue; if(!p[i]) {p[i] = x;break;} x ^= p[i]; }}int main(){ n = read(); rep(i,1,n) a[i] = read(),insert(a[i]); rep(i,0,30) if(p[i]) b[cnt++] = i; q = read(); rep(i,0,cnt-1) if((q >> b[i]) & 1) tot += 1 << i; printf("%d\n",inc(mul(tot,qpow(2,n-cnt)),1)); return 0;}

转载于:https://www.cnblogs.com/captain1/p/10247116.html

你可能感兴趣的文章
LeetCode--006--Z字型变换(java)
查看>>
Qt 中文问题
查看>>
【HANA系列】SAP HANA计算视图中的RANK使用方法
查看>>
MouseOver/MouseOut vs MouseEnter/MouseLeave
查看>>
使用web api开发微信公众号,调用图灵机器人接口(一)
查看>>
与HTTP协作的Web服务器
查看>>
(转)python time模块和datetime模块详解
查看>>
poj3255 Roadblocks 次短路
查看>>
Spring 3.0.5 MVC 基于注解ehcache.xml 配置方式
查看>>
Spark安装部署
查看>>
Environment.NewLine
查看>>
insert into 和 where not exists
查看>>
BZOJ4380: [POI2015]Myjnie
查看>>
ASP.NET中的多线程整理
查看>>
阶段总结
查看>>
Quartz.Net学习笔记(二) Jobs And Triggers
查看>>
java 注解
查看>>
砸砖块
查看>>
如何用启动界面给用户创造出色的第一印象
查看>>
.NET-记一次架构优化实战与方案-目录
查看>>