解析

关键结论:

若 nnn 个数组成的线性基大小为 SSS,则其子集异或组成的结果有 2S2^S2S 种,且每种结果都有 2n−S2^{n-S}2n−S 种方案。

证明:考虑 n−Sn-Sn−S 个没有加入线性基的元素的任意一个子集,其异或和为 xxx,线性基中的互不相同的 2S2^S2S 种异或和分别与 xxx 异或,必然得到 2S2^S2S 种不同结果,又由于这 nnn 个数异或的结果只有 2S2^S2S 个,所以就是每种结果的方案+1。一共有 2n−S2^{n-S}2n−S 个 xxx,每种结果也就有 2n−S2^{n-S}2n−S 个方案。

有了这个结论本题也就结束了,直接求出排名后乘一个2的幂次即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int ll
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define OK debug("OK\n")
inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)){if(c=='-') f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
const int N=4e5+100;
const int mod=1e9+7;
int n,m,d;ll a[70],mi[70],o=30,num;
inline int ins(int x){for(int i=o;i>=0;i--){if(!(x&mi[i])) continue;if(!a[i]){a[i]=x;return true;}x^=a[i];}return false;
}
int rnk(int x){int res(0),now=num;for(int i=o;i>=0;i--){if(!a[i]) continue;now--;if(x&mi[i]){//x^=a[i];res+=mi[now];}}return res;
}signed main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);
#endifmi[0]=1;for(int i=1;i<=o;i++) mi[i]=mi[i-1]<<1;n=read();for(int i=1;i<=n;i++) num+=ins(read());//for(int i=0;i<=o;i++) if(a[i]) printf("%lld ",a[i]);//puts("");int ans=rnk(read());for(int i=1;i<=n-num;i++) ans=ans*2%10086;printf("%lld\n",(ans+1)%10086);
}
/*
*/

YBTOJ洛谷P4869:出现位置(线性基)相关推荐

  1. 洛谷P4390 [BOI2007]Mokia 摩基亚 题解

    洛谷P4390 [BOI2007]Mokia 摩基亚 题解 题目链接:P4390 [BOI2007]Mokia 摩基亚 题意:摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和 ...

  2. YBTOJ洛谷P3292:幸运数字(线性基、点分治/倍增)

    解析 虽然使用三个log的倍增算法艹过去了 但是我们还是来聊聊正解吧 考虑点分治 对于当前的根,dfs求出联通块内每个点到当前根的线性基 一条路径的答案应该在路径出现上第一个成为根的点时统计到 具体来 ...

  3. 洛谷 P4869 albus就是要第一个出场(求一个数在线性基中的排名)

    传送门 题目大意 给出一个包含nnn个元素[1,n][1,n][1,n]的集合,将所有子集(包括空集)的异或和全部排序得到一个序列,每次给定一个一定存在的数xxx,求出其下标(从111开始). 解题思 ...

  4. 洛谷P4869 albus就是要第一个出场(线性基)

    传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 线性基居然有这性质我还不知道orz 假设$n$个数的线性基中有$k$个数,那么显然共有$2^k$个不同的异或和,而其中每一个异或和的出现次数都是$2 ...

  5. YBTOJ洛谷P4074:糖果公园(树上莫队)

    文章目录 解析 update: 代码 所谓树上莫队,就是在树上的莫队 (逃) 传送门 解析 似乎就是树上的这道题 考虑如何转化为序列问题呢? 考虑dfs序 但是又一个问题... 似乎这条链的dfs序不 ...

  6. YBTOJ洛谷P4551:最长异或路径(trie树)

    洛谷传送门 文章目录 题目描述 解析 代码 题目描述 解析 本题关键就在于一点: 若把每个点的深度dep[i]定义为从根到节点边权的异或和 那么i到j的路径异或和可以表示为: dep[i] ^ dep ...

  7. 洛谷 P4390 [BOI2007]Mokia 摩基亚 解题报告

    P4390 [BOI2007]Mokia 摩基亚 题目描述 摩尔瓦多的移动电话公司摩基亚(\(Mokia\))设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如"用户 ...

  8. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  9. 洛谷 - P4390 [BOI2007]Mokia 摩基亚(带修二维数点-四叉线段树/CDQ分治)

    题目链接:点击查看 题目大意:给出一个二维平面坐标系,需要执行数次操作,具体操作分为下列两种: 1 x y a:坐标 (x,y)(x,y)(x,y) 加上 aaa 个点 2 x1 y1 x2 y2:查 ...

最新文章

  1. 成长与迁移,全球半导体格局演变
  2. 坑爹的PHImageManager和PHImageRequestOptions
  3. eslint 学习笔记
  4. 损坏防浪涌电插排内部电路
  5. python界面颜色-给Python点颜色——青少年学编程
  6. php 如何启动ica文件,IE11打开ICA文件时无法直接调用Citrix Receiver?
  7. JQuery 自动触发事件
  8. Github 移动端上架!把世界最大同性交友社区装进口袋
  9. 【Linux】一步一步学Linux——ncat命令(159)
  10. net以execl做数据库_[原创]Net实现Excel导入导出到数据库(附源码)
  11. 常用的Linux命令
  12. 云终端服务器属于计算机设备吗,云终端不等于云电脑
  13. halcon 缺陷检测 表面凸点检测
  14. Ubuntu18.04配置运行Kintinuous
  15. SQL Server研习录(25)——sql server触发器、instered表和deleted表知识详解及示例分析
  16. 微信小程序之分享海报生成
  17. node的HTPP请求
  18. matlab的fft与ifft,fft与ifft区别
  19. 网页代码扒ppt_在网页中在线浏览ppt文档
  20. 京东商品滞销怎么处理,如何一键清理?

热门文章

  1. NP完全性理论与近似算法
  2. 欧文分校的计算机科学博士,UCI的CS「加州大学欧文分校计算机科学系」
  3. java+字节码工具64位_jclasslib 下载-jclasslib 32位64位(java字节码查看工具) 5.1 官方版 - 河东下载站...
  4. vs code python 插件_工具篇-vscode效率提升插件
  5. Android 调用12306接口,GitHub - AndroidyxChen/loading-12306: 仿PC端12306的刷新loading的自定义view...
  6. northstar机器人编程_《机器人构建实战》——导读
  7. 端口和进程的关系(详解)
  8. leetcode309. 最佳买卖股票时机含冷冻期
  9. 高等数学下-赵立军-北京大学出版社-题解-练习10.5
  10. 莫比乌斯反演/容斥 +2020ICPC 江西省大学生程序设计竞赛 A Simple Math Problem