比赛时脑子一直想着按位卷积...

按题解的思路:

/*
HDU 6129 - Just do it [ 规律,组合数 ] | 2017 Multi-University Training Contest 7
题意:
给定数组 a[N],一次操作为 a[N] 求前缀异或和,问 M 次操作后的数组
限制 M <= 1e9, N <= 2e5
分析:
设 dp[i][j] 为 a[i] 经 j 次操作后的序列
易得递推式 dp[i][j] = dp[i-1][j] ^ dp[i][j-1]
进一步可推导出 dp[i][j] = dp[i-2^k][j] ^ dp[i][j-2^k]
由此可将 m 按二进制拆分后直接做这个dp, 类似完全背包压缩第二维
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 2e+5;
int t, n, m, a[N];
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
while (m)
{
int x = m&(-m);
for (int i = x; i < n; i++) a[i] = a[i]^a[i-x];
m -= x;
}
for (int i = 0; i < n-1; i++) printf("%d ", a[i]);
printf("%d\n", a[n-1]);
}
}

 还有一种比较暴力的方法:

 

/*
分析第一项对所有项 m 次的贡献系数:
C(m-1,m-1)%2 , C(m,m-1)%2, C(m+1,m-1)%2, ... ,C(m+n-1,m-1)%2
组合数对二取模根据lucas定理,C(a,b)%2,当 b 按二进制位是 a的子集时 为 1,否则为 0
由于 1 很少,更新组合数为 1 的贡献即可
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
int t, n, m, a[N];
int ans[N];
int comb(int a, int b)
{
if ((a|b) == a) return 1;
else return 0;
}
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
memset(ans, 0, sizeof(ans));
for (int i = 0; i < n; i++)
{
if (comb(i+m-1, m-1))
{
for (int j = 0; j+i < n; j++)
{
ans[j+i] ^= a[j];
}
}
}
for (int i = 0; i < n-1; i++) printf("%d ", ans[i]);
printf("%d\n", ans[n-1]);
}
}

  

HDU 6129 - Just do it | 2017 Multi-University Training Contest 7的更多相关文章

  1. HDU 6162 - Ch’s gift | 2017 ZJUT Multi-University Training 9

    /* HDU 6162 - Ch’s gift [ LCA,线段树 ] | 2017 ZJUT Multi-University Training 9 题意: N节点的树,Q组询问 每次询问s,t两节 ...

  2. 2017 Wuhan University Programming Contest (Online Round) Lost in WHU 矩阵快速幂 一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开。

    /** 题目:Lost in WHU 链接:https://oj.ejq.me/problem/26 题意:一个无向图,求从1出发到达n最多经过T条边的方法数,边可以重复经过,到达n之后不可以再离开. ...

  3. 2017 Wuhan University Programming Contest (Online Round) C. Divide by Six 分析+模拟

    /** 题目:C. Divide by Six 链接:https://oj.ejq.me/problem/24 题意:给定一个数,这个数位数达到1e5,可能存在前导0.问为了使这个数是6的倍数,且没有 ...

  4. 2017 Wuhan University Programming Contest (Online Round) B Color 树形dp求染色方法数

    /** 题目:Color 链接:https://oj.ejq.me/problem/23 题意:给定一颗树,将树上的点最多染成m种颜色,有些节点不可以染成某些颜色.相邻节点颜色不同.求染色方法数. 思 ...

  5. 2017 Wuhan University Programming Contest (Online Round) D. Events,线段树区间更新+最值查询!

    D. Events 线段树区间更新查询区间历史最小值,看似很简单的题意写了两天才写出来. 题意:n个数,Q次操作,每次操作对一个区间[l,r]的数同时加上C,然后输出这段区间的历史最小值. 思路:在线 ...

  6. hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 思路: 暴力,预处理三个前缀和:[1,n]桃子会被摘掉,1到当前点的最大值,1到当前点被摘掉的桃子的 ...

  7. hdu 6319 Problem A. Ascending Rating (2018 Multi-University Training Contest 3 A)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=6319 思路: 单调队列倒着维护,队列里面剩下的值的数量就是这一段区间的count值,如样例第一个区间:3 ...

  8. HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)

    思路: 只有速度最大才有可能为1,速度不是最大肯定为0,那么就是 只需要操作那些速度最大的点,这些点求一个凸包,判断一下是不是在凸包边上即可. 有几个需要注意的地方: 1.最大速度如果为0   那么肯 ...

  9. HDU 4939 Stupid Tower Defense (2014 Multi-University Training Contest 7)

    思路:首先红色肯定要放在最后面.前面蓝色和绿色dp求解. dp[i][j]  表示前面(i+j) 个 有 i 个蓝色塔  j个绿色塔 能造成最大伤害. //====================== ...

随机推荐

  1. nohup启动后台进程并重定向

    一:linux重定向 0,1,2分别表示标准输入,标准输出和标准错误输出,一般情况下默认是标准输出 a. 1>log:标准输出重定向的log文件 b. 2>log:错误输出重定向到log文 ...

  2. ubuntu 上不了网,解决方案之一

    每个人的情况可能不同,我的情况是由于强制关机网卡坏了,网络没有自动分配ip,ens33网卡没有ip,这时得手动启动命令 sudo dhclient 来自动获取ip地址.这里要感谢这篇博客,让我意识到自 ...

  3. pandas之聚合运算

    通过聚合运算可以得到我们比较感兴趣的数据以方便处理 import pandas as pd import numpy as np # 先创建一组数据表DataFrame df = pd.DataFra ...

  4. python中列表之间求差集、交集、并集

    求两个列表的交集.并集.差集 def diff(listA, listB): # 求交集的两种方式 retA = [i for i in listA if i in listB] retB = lis ...

  5. 2019版UI学习路线(含大纲+视频+工具+网盘+面试题)

    2019最新UI设计师教程(学习路线+课程大纲+视频教程+面试题+学习工具) 什么是全链路UI设计 UI设计师是随着网络而兴起的新兴设计行业,从事对软件的人机交互.操作逻辑.界面美观的整体设计工作.涉 ...

  6. S04_CH01_搭建工程移植LINUX/测试EMMC/VGA

    S04_CH01_搭建工程移植LINUX/测试EMMC/VGA 1.1概述: 本章内容是在已经提供安装了VIVADO2015.4 的ubuntu系统下,进行.大家可以下周我们已经提供的虚拟机镜像,我们 ...

  7. SpringBoot 第一篇:HelloWorld 跑起来

    背景 金融行业从业快十年,作为银行系开发人员来说开源框架了解不多非常正常,因为银行系的运行平台,基本上不会采购小厂商集合开源框架自建的产品,竞标的产品没有几十个成功案例,你也进不了这个门槛(有关系的除 ...

  8. Mish:一个新的SOTA激活函数,ReLU的继任者

    Mish:一个新的SOTA激活函数,ReLU的继任者 CVer 昨天   以下文章来源于AI公园 ,作者ronghuaiyang AI公园 专注分享干货的AI公众号,图像处理,NLP,深度学习,机器学 ...

  9. (二)easyUI之消息提示框

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. linux 用户切换组

    问题: 因为默认的的网站路径 /var/www/html 是root 用户 root组的, 想要修改什么的需要用sudo 很麻烦. 解决: 将当前用户 hehecat加入至root组,使之有权限对目录 ...