2844: albus就是要第一个出场

链接

分析:

  和HDU3949差不多互逆,这里需要加上相同的数。

  结论:所有数任意异或,构成的数出现一样的次数,次数为$2^{n-cnt}$,cnt为线性基的大小。

  结论:集合中所有异或值为0的集合有$2^{n-cnt}$个(包括空集)。

  证明及详细过程参考:https://blog.sengxian.com/algorithms/linear-basis,https://blog.csdn.net/jaihk662/article/details/78654679

 

代码:

 #include<bits/stdc++.h>
using namespace std;
typedef long long LL; char buf[],*_p1 = buf,*_p2 = buf;
#define nc() (_p1==_p2&&(_p2=(_p1=buf)+fread(buf,1,100000,stdin),_p1==_p2) ? EOF : *_p1++)
inline int read() {
int x=,f=;char ch=nc();for(;!isdigit(ch);ch=nc())if(ch=='-')f=-;
for (;isdigit(ch);ch=nc())x=x*+ch-'';return x*f;
} const int N = ;
const int m = ;
const int mod = ; int a[N],b[];
vector<int> v;
int n,cnt; inline void build() {
for (int i=; i<=n; ++i)
for (int j=m; j>=; --j)
if ((a[i] >> j) & ) {
if (b[j]) a[i] ^= b[j];
else {
cnt++;b[j] = a[i];
for (int k=j-; k>=; --k) if (b[k]&&((b[j]>>k)&)) b[j] ^= b[k]; // 这两行可以省掉,因为下面用不到,只判断一下
for (int k=j+; k<=m; ++k) if ((b[j]>>k)&) b[k] ^= b[j];
break;
}
}
for (int i=; i<=m; ++i)
if (b[i]) v.push_back(i); // --push_back(i),说明(1<<i)的位置有1
}
inline int ksm(int a,int b) {
int ans = ; // --
while (b) {
if (b & ) ans = (ans * a) % mod;
a = (a * a) % mod;
b >>= ;
}
return ans % mod;
}
inline void solve() {
int q = read();
if (q == ) {cout << ;return ;}
int rnk = ,sz = v.size();
for (int i=; i<sz; ++i) // 得到排名,从小的开始取,看v[i]能否才参与构成q,如果可以加上2^i,i为v[i]的排名(第i个线性基元素)
if ((q >> v[i]) & ) rnk += ( << i);
cout << (rnk % mod * ksm(,n-cnt) + ) % mod; // 加一:包括空集
}
int main() {
n = read();
for (int i=; i<=n; ++i) a[i] = read();
build();
solve();
return ;
}

2844: albus就是要第一个出场的更多相关文章

  1. BZOJ 2844: albus就是要第一个出场 [高斯消元XOR 线性基]

    2844: albus就是要第一个出场 题意:给定一个n个数的集合S和一个数x,求x在S的$2^n$个子集从小到大的异或和序列中最早出现的位置 一开始看错题了...人家要求的是x第一次出现位置不是第x ...

  2. BZOJ 2844: albus就是要第一个出场

    2844: albus就是要第一个出场 Time Limit: 6 Sec  Memory Limit: 128 MBSubmit: 1134  Solved: 481[Submit][Status] ...

  3. bzoj 2844: albus就是要第一个出场 高斯消元

    LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异 ...

  4. BZOJ 2844 albus就是要第一个出场(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2844 题意: 给出一个长度为n的正整数数列A.每次选出A的一个子集进行抑或(空集抑或值为 ...

  5. BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基

    [题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i ...

  6. bzoj 2844 albus就是要第一个出场 - 线性基

    题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 给定集合$S$,现在将任意$A\subseteq S$中的元素求异或和,然后存入一个数组中(下标从1开始),然后从小到大排 ...

  7. bzoj 2844 albus就是要第一个出场 异或和出现次数 线性基

    题目链接 题意 给定\(n\)个数,将其所有的子集(\(2^n\)个)的异或和按升序排列.给出一个询问\(q\),问\(q\)在该序列中第一次出现位置的下标(下标从\(1\)开始). 题解 结论 记其 ...

  8. CF895C: Square Subsets && 【BZOJ2844】albus就是要第一个出场

    CF895C: Square Subsets && [BZOJ2844]albus就是要第一个出场 这两道题很类似,都是线性基的计数问题,解题的核心思想也一样. CF895C Squa ...

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

    [BZOJ2844]albus就是要第一个出场 Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2 ...

随机推荐

  1. 如何查找Fiori UI上某个字段对应的后台存储表的名称

    今天微信群里有朋友问到这个问题. 如果是SAPGUI里的事务码,比如MM01,对于开发者来说这个任务非常容易完成. 比如我想知道下图"Sales Unit"这个字段的值到底保存在哪 ...

  2. html css:背景图片链接css写法

    图片作为背景,并且是链接的写法.例如网站的logo图片.例如:土豆的logo图片 <a title="土豆网 tudou.com 每个人都是生活的导演" href=" ...

  3. 使用jvisualvm.exe工具查看java项目内存溢出(堆溢出)

    在查看内存溢出的时候,我们需要明白,堆溢出和持久代溢出,他们不一样,说到内存泄漏,我们就需要明白,内存中  年老代和新生代,和持久代,这3块的数据 自己的理解: new了一个对象,会进入到堆里面,先放 ...

  4. SpringMVC学习记录六——异常定义和上传图片

    19       异常处理 19.1      异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试 ...

  5. 深入 Struts2 的配置 - 处理多个请求-处理请求结果-模型驱动-异常机制

    转:http://www.java3z.com/cwbwebhome/article/article2/2938.html?id=1631 本部分主要介绍struts.xml的常用配置. 1.1.   ...

  6. 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)

    洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...

  7. Python基础—14-邮件与短信

    邮件与短信 邮件发送 简介: 邮件服务器.账户.密码 相关协议:SMTP.POP3.IMAP 默认TCP协议端口:25 用途:经常用在一个网站的注册激活.通知.找回密码等场景 库:smtplib 示例 ...

  8. JavaScript 基础(四) 循环

    JavaScript的循环有两种,一种是for 循环,通过初始条件,结束条件和递增条件来循环执行语句块: var x = 0; var i; for(i=1; i <=10000; i++){ ...

  9. MySQL备份恢复之Xtrabackup

    Preface       Today,I'm gonna use the Xtrabackup tool to demonstrate the procedure of backing up MyS ...

  10. CSRF的原理和防范措施

    a)攻击原理: i.用户C访问正常网站A时进行登录,浏览器保存A的cookie ii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参 ...