首页 > 其他分享 >ARC137D Prefix XORs 题解

ARC137D Prefix XORs 题解

时间:2023-08-11 19:33:11浏览次数:49  
标签:XORs matrix int 题解 cdots Prefix choose 3a

这里的所有下标从 \(\bm 0\) 开始。

我们考察一下每次操作后的数列 \(a\) 会是什么样的。这里用 \(a_i\) 前面的系数 \(x\) 表示 \(a_i\) 贡献了 \(x\) 次,\(+\) 表示异或。

\[\begin{matrix} k=0&a_0&a_1&a_2&\cdots&a_{n-1}\\ k=1&a_0&a_0+a_1&a_0+a_1+a_2&\cdots&{n-1\choose 0}a_0+{n-2\choose 0}a_1+\cdots+{0\choose 0}a_{n-1}\\ k=2&a_0&2a_0+a_1&3a_0+2a_1+a_2&\cdots&{n\choose 1}a_0+{n-1\choose 1}a_1+\cdots+{1\choose 1}a_{n-1}\\ k=3&a_0&3a_0+a_1&6a_0+3a_1+a_2&\cdots&{n+1\choose 2}a_0+{n\choose 2}a_1+\cdots+{2\choose 2}a_{n-1}\\ \cdots&\cdots&\cdots&\cdots&\cdots&\cdots\\ k=m&a_0&ma_0+a_1&\cdots&\cdots&\cdots \end{matrix} \]

可以发现,操作 \(k\) 次后,\(a_i\) 对 \(a_{n-1}\) 的贡献系数 \(x\) 就是:

\[n-i+k-2\choose k-1 \]

当且仅当 \(n-i+k-2\choose k-1\) 为奇数的时候,\(a_i\) 才能对 \(a_{n-1}\) 产生贡献。由 Lucas 定理,这个条件等价于 \(n-i-1\) 和 \(k-1\) 的按位与是 \(0\)。用 \(U\) 表示全集,集合运算表示位运算,那么这个条件又等价于 \(k-1\subseteq U\setminus (n-i-1)\)。这个玩意就是一个高维后缀和。

时间复杂度 \(\mathcal O(n\log n)\)。

#include <algorithm>
#include <cstdio>
using namespace std;

const int N = 1e6, LOGN = 20;

int n, m, a[N + 10], b[1 << LOGN];

int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++)
    scanf("%d", a + i);
  int all = (1 << LOGN) - 1;
  for (int i = 0; i < n; i++)
    b[all ^ (n - i - 1)] = a[i];
  for (int i = 0; i < LOGN; i++)
    for (int msk = 0; msk < (1 << LOGN); msk++)
      if (!((msk >> i) & 1)) b[msk] ^= b[msk ^ (1 << i)];
  for (int i = 0; i < m; i++)
    printf("%d%c", b[i], " \n"[i == m - 1]);
  return 0;
}

标签:XORs,matrix,int,题解,cdots,Prefix,choose,3a
From: https://www.cnblogs.com/registergen/p/solution_arc137d.html

相关文章

  • Subtree 题解
    Subtree题目大意给定一颗树,你可以选出一些节点,你需要对于每个点求出在强制选这个点的情况下所有选择的点联通的方案数,对给定模数取模。思路分析对于这种求树上每一个点方案数的题目,首先考虑换根DP。强制嵌定树根为\(1\),设\(f_i\)表示在\(i\)的子树中选点,\(i\)强制选,所......
  • 国标GB28181视频云服务平台LntonGBS(源码)国标平台对接宇视SDK,多次点击录像回放出现崩溃
    LntonGBS是一款基于国标GB28181协议的视频云服务平台。通过该平台,可以实现设备接入并支持视频的实时监控直播、录像、语音对讲、云存储、告警、级联等功能。此外,LntonGBS还支持将接入的视频流进行全终端、全平台的分发,包括支持RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流分发。另......
  • 题解 LuoguP3306 [SDOI2013] 随机数生成器
    题目链接:【LuoguP3306】。前置知识OI-Wiki:快速幂,扩展欧几里得算法(exgcd),BabyStep,GiantStep算法。题意很清楚,不说。分析当\(t=x\)时答案很明显为\(1\),即在第一天就可以读到。当\(t\neqx\)时当\(a=0\)时观察一下规律:\[x_1\equivx_1\pmod{p}\]\[x_2\equivb......
  • HDU 多校 Round #6 题解
    HDU多校Round#6题解\(\text{ByDaiRuiChen007}\)A.CountProblemLink题目大意求有多少个长度为\(n\),字符集大小为\(m\)的字符串有长度为\(n-k\)的周期。数据范围:\(n,m,k\le10^{18}\)。思路分析\(k=n\)时答案为\(m^n\),否则转为有长度为\(k\)的Border,答案......
  • Royal Questions题解
    题目链接RoyalQuestions-洛谷|计算机科学教育新生态(luogu.com.cn)分析每个公主会选择两个王子,考虑将每个公主所选择的两个王子连边,边权为该公主的嫁妆选择该边即为选择该公主那么结果图是什么呢?由于每个王子最多只能选择一个公主即每个点最多有1个出边(也可能没有出边......
  • 【题解】Educational Codeforces Round 148(CF1832)
    A.NewPalindrome题目描述:给你一个由小写字母组成的回文字符串,问你是否能在重排其之后构造出另一个与原串不同的回文字符串。多测,\(t\le1000,2\le|s|\le50\)题目分析:考虑其实就是前\(\lfloor\frac{n}{2}\rfloor\)个位置存在两种或以上的不同字符,因为这样直接交换对......
  • P2203 Blink 题解
    好像并没有矩阵快速幂的题解,那我来写一篇题目分析对于每两盏灯,只考虑右灯变化,分为四种情况:左灯为\(1\),右灯为\(1\),右灯变为\(0\);左灯为\(0\),右灯为\(0\),右灯不变,为\(0\);左灯为\(1\),右灯为\(0\),右灯变为\(1\);左灯为\(0\),右灯为\(1\),右灯不变,为\(1\);设第\(i\)......
  • P9342 Bitaro's Travel 题解
    模拟赛做到的题,赛后看了Y2hlbnlpa2Fp的题解,感觉没讲清楚,这里做下补充,提供自己的理解。基本思路:对每个\(A_i\)的答案进行预处理,对于每个询问,只需要找到第一个到达的景点即可。那么如何预处理每个点的答案呢?有一条很重要的性质:最多转向\(\log{X}\)次。要证明这个结论,先放......
  • P6879 スタンプラリー 3 题解
    思路前几篇题解都介绍了,这里着重介绍一个状态设计的小技巧。在设计状态时,我们可能会碰到状态数值过大,而dp数组内存的值较小的情况。例如在该题用\(dp_{l,r,t,0/1}\)表示逆时针经过\(l\)个,顺时针经过\(r\)个,已经花费\(t\)秒,所拿到的雕像个数,\(0\)表示当前在左端点,\(1\)......
  • AT_apc001_g Colorful Doors 题解
    模拟赛做到的题,场上写贪心爆栈了qwq首先在首尾加上两个\(1\)表示进出,将两段路中间的间隔作为传送门,恰好有\(2\timesN\)个传送门,根据两段路的经过情况给传送门分类别:00:用\(N\)表示,称为无用点,不到达该点。10:用\(S\)表示,称为起点,需要通过向右走走到一次。01:用\(T\)......