多校时找规律做过。。。

题意,给你一个数列a[1], a[2], a[3], a[4], ... , a[n],操作一次后变为a[1], a[1] ^ a[2], a[1] ^ a[2] ^ a[3], ..., a[1] ^ a[2] ^ a[3] ^...^a[n],

让你计算出m次操作后的数列

令F(x, y, i) 表示x次操作后新的a[y]中初始 a[i]被亦或的次数

F(x, y, i) = F(x - 1, y, i) + F(x, y - 1, i)

联系几何意义,实际就是(1, i) 到 (x, y) 的路径条数,即 C(m - 1 + x - i, x - i)。

即可得到n^2的做法,猜想这些组合数中偶数很多,调整循环顺序,就AC了

这里判断组合数是否为偶数,采用了比较2的方幂的方法。

当然,也可以使用库摩尔定理(大概是15年联赛数论23333)

库摩尔定理:有两个正整数n,m,p是质数,C(n + m, m) 含p的幂次等于m+n在p进制下的进位数。

(在p进制下,产生一次进位,会贡献一个p)

当p为2时,若C(n + m, m)为奇数,则m+n不能产生进位,则意味着m数位为1的地方n必须为0,n数位为1的地方m必须为0,即 m & n = 0

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 2e5 + ;
int a[N], b[N];
#define rep(i, j, k) for (int i = int(j); i <= int(k); ++ i) inline int f(int x) {
int ret = ;
while (x) {
ret += (x >> );
x >>= ;
}
return ret;
}
inline int Comb(int n, int m) {
return f(n) - f(m) - f(n - m);
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
int n, m;
scanf("%d%d", &n, &m);
rep(i, , n) scanf("%d", a + i);
// rep(x, 1, n) {
// rep(i, 1, x) {
// if (!Comb(m - 1 + x - i, x - i)) b[x] ^= a[i];
// }
// }
rep(j, , n - )
if (!Comb(m - + j, j)) {
rep(x, j + , n) {
int i = x - j;
b[x] ^= a[i];
}
} rep(i, , n - ) printf("%d ", b[i]);
printf("%d\n", b[n]);
memset(b, , sizeof(b));
}
}

最新文章

  1. Linux下的串口编程及非阻塞模式
  2. 比特币_Bitcoin 简介
  3. Cheat sheets
  4. c# 验证码类
  5. C#:数据交互
  6. List-ApI及详解
  7. 安卓手机的touchend事件不触发问题
  8. STM32软件仿真的一个注意点
  9. Windows 内核(WRK)编译
  10. for的用法
  11. tomcat 7 启动超时设置。。。实在太隐蔽了
  12. python基础(二)- 字符串
  13. stock 当天盘势
  14. ios获取本机网络IP地址方法
  15. TypeScript 函数-Lambads 和 this 关键字的使用
  16. 获取访问IP
  17. Evenbus简单用法
  18. Mongodb的windows服务安装和卸载
  19. Python | 一行命令生成动态二维码
  20. Java 8新增的Lambda表达式

热门文章

  1. Java之事务的基本应用
  2. nginx配置虚拟主机vhost的方法详解
  3. Number 强制类型转换 int 强制转换整型 float 强制转换浮点型 complex 强制转换成复数 bool 强制转换成布尔类型,结果只有两种,要么True 要么 False &quot;&quot;&quot;bool 可以转换所有的数据类型 everything&quot;&quot;&quot;
  4. pprint
  5. php判断是否为命令行模式
  6. Linux平台 Oracle 18c RAC安装Part2:GI配置
  7. 四、latex字体字号设置
  8. 从Win32程序中的主函数中获取命令行参数
  9. js前端使用jOrgChart插件实现组织架构图的展示
  10. 第二篇——Struts2的Action搜索顺序