2844: albus就是要第一个出场

链接

分析:

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

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

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

  证明及详细过程参考:https://blog.sengxian.com/algorithms/linear-basishttps://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 ;
}

最新文章

  1. 二叉树的创建和遍历(C版和java版)
  2. gitlab 创建SSH Keys 报500错
  3. web前端学习(二) javascript对象和原型继承
  4. 自定义Cell的方法
  5. Android ActionBar的基本用法
  6. Dig out deleted chat messages of App Skype
  7. newCachedThreadPool线程池
  8. NOI2005维修数列 splay
  9. CRC16校验
  10. 笔记——ES5 Array
  11. IEEE 754 浮点数的四种舍入方式
  12. Area - POJ 1265(pick定理求格点数+求多边形面积)
  13. SSH返回Json格式的数据
  14. 黑马入学基础测试(三)求斐波那契数列第n项,n&lt;30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55
  15. SCVMM更换数据库,如何搞?
  16. Window10安装TestLink,以及登录mysql数据库的错误处理
  17. Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good
  18. POJ3187 Backward Digit Sums
  19. MyBatis 一、二级缓存和自定义缓存
  20. 修改Android idc文件

热门文章

  1. 关于自学C语言这件事
  2. LeetCodeOJ刷题之15-16【3Sum(三数和问题)】
  3. Django:web框架本质
  4. 郑州集训Day4 [小Cat与小鲜肉]
  5. 【洛谷P1039】侦探推理
  6. Android中得到布局文件对象有三种方式
  7. 导航栏的ul中的li设置问题
  8. HTML简介及基本标记
  9. 为什么你的 App 没人用?请按这8条逐一对照
  10. Webpack学习笔记九 webpack优化总结