首页 > 其他分享 >[AGC061E] Increment or XOR

[AGC061E] Increment or XOR

时间:2024-10-14 12:43:44浏览次数:1  
标签:XOR 我们 异或 AGC061E Increment 加法 操作 转移 进位

题目中涉及到了加法和异或,一个是进位加法,一个是不进位加法,显得很不可做。

但是我们注意到加法只加 \(1\),如果产生进位了,那会将末尾的所有 \(1\) 推平成 \(0\),而如果没有进位,则后面的位不会受到加法影响。

这启发我们挖掘这道题的过程。我们发现这个过程形似可以从低位推到高位,并且过程中会有很多整个后缀全部为 \(0\) 的状态。那么我们可以将过程分成若干个阶段阶段,并且发现,在 \([0,i-1]\) 位还未产生进位时,处理 \([i,40]\) 位的异或操作是简单的,只需要记录每个异或操作次数的奇偶性即可,因为他们不会收到加法影响,那么我们考虑 dp,设 \(f_{i,0/1,0/1,s}\) 表示考虑 \([0,i-1]\) 位,初始状态是 \(S\) 或全 \(0\),末尾状态是 \(T\) 或进位,异或操作的奇偶性为 \(S\),从初始状态到末尾状态的最小代价。

我们发现这个状态设计是足够的,现在考虑转移。

首先,第 \(i\) 位若可以直接匹配状态,直接转移就行,挨个讨论即可。

现在开始考虑需要多次进位的转移。首先,由于会出现进位,若我们要转移 \(f_{i+1,x,y,S}\),首先我们显然要从 \(f_{i,x,1,S_0}\) 开始,然后,我们接下来将会进行一系列的异或和加法操作,在此过程中我们需控制进位只能在第 \(i\) 位进位,不能影响到最后的位置。最后,我们再以一个 \(f_{i,1,y,S_{m+1}}\) 的操作完成转移,\(m\) 表示中间的综合操作的次数,那么转移方程就呼之欲出了:

\[f_{i+1,x,y,\bigoplus_{j=0}^{m+1} S_j}=f_{i,x,1,S_0}+f_{i,1,y,S_{m+1}}+\sum_{j=1}^m f_{i,1,1,S_j} \]

我们发现这个转移的形式其实是一个最短路形式,那么我们可以用 dijkstra 的方式去转移,最后答案为 \(\min(f_{40,0,0,S})\),时间复杂度 \(\mathcal{O}(2^{2n}\log V)\)。

标签:XOR,我们,异或,AGC061E,Increment,加法,操作,转移,进位
From: https://www.cnblogs.com/lalaouyehome/p/18463863

相关文章

  • 3158. 求出出现两次数字的 XOR 值
    给你一个数组nums,数组中的数字要么出现一次,要么出现两次。请你返回数组中所有出现两次数字的按位XOR值,如果没有数字出现过两次,返回0。示例1:输入:nums=[1,2,1,3]输出:1解释:nums中唯一出现过两次的数字是1。示例2:输入:nums=[1,2,3]输出:0解释:nums中没有数......
  • CF959F Mahmoud and Ehab and yet another xor task 题解
    题目传送门前置知识线性基解法将操作离线下来,并按\(\{l\}\)升序排序,接着顺序插入线性基并处理询问。对于未成功插入线性基的元素\(k\)一定能被线性基内选出若干元素得到。故在\(x\)能被表出的情况下,设\(1\siml\)中成功插入线性基的元素个数为\(siz\),对于剩下\(......
  • AT_abc283_g [ABC283G] Partial Xor Enumeration 题解
    题目传送门前置知识线性基解法考虑线性基。因为有可空子序列也参与运算,所以第\(1\)小的数是\(0\);但线性基中是不允许有异或和为\(0\)的存在,故线性空间内第\(k-1\)小的数就是所求的第\(k\)小的数。令每一个二进制位仅在它这一位的基底上出现,其他位上的基底直接异或......
  • [ABC150F] Xor Shift
    题意给定两个序列\(a,b\),求将\(b\)循环移位\(k\)位,再给所有\(b_i\oplusx\),求所有满足条件的\((k,x)\)。\(n\le2\times10^5\)。Sol对于区间异或,容易想到差分。考虑对\(a\)和\(b\)分别差分,注意到差分后\(x\)直接消失了!也就是:\(a_0\oplusa_1=b_{(......
  • kedro IncrementalDataset 简单说明
    IncrementalDataset实现了一种增量数据处理的能力,基于了PartitionedDataset同时包含了checkpoint确保数据处理的准确性,对于checkpoint可以配置自己的函数参考定义参考catalog定义my_partitioned_dataset:type:partitions.IncrementalDatasetpath:......
  • Sum of XOR Functions
    SumofXORFunctions题目有一个序列\(a\),计算:\[\sum\limits_{l=1}^{n}\sum\limits_{r=l}^n(r-l+1)\times\bigoplus\limits_{i=l}^{r}a_i\]思路位运算的题,我们对于每一位进行考虑,会发现构成了很多个\(0,1\)序列,则我们对于每一个序列考虑价值,求和即可。设\(b\)序列为这......
  • CF1207E XOR Guessing
    思路设答案为\(a\),第一次异或的数为\(b\),第二次异或的数为\(c\),则可以通过两次询问知道\(a\oplusb\)和\(a\oplusc\),所以\(b\oplusc=(a\oplusb)\oplus(a\oplusc)\)。因为范围为\([0,2^{14}-1]\),且每次询问只有\(100\)次,所以可以让第一次询问\(\{1,2,\cdots......
  • XOR 加密简介
    XOR加密简介作者: 阮一峰日期: 2017年5月31日本文介绍一种简单高效、非常安全的加密方法:XOR加密。一、XOR运算逻辑运算之中,除了 AND 和 OR,还有一种 XOR 运算,中文称为"异或运算"。它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值......
  • CF1446C Xor Tree
    很有意思的题目,我们考虑能连边的两个数一定是在01-Trie上距离最近的两个点。于是我们先把所有数插入到01-Trie上去,然后\(dp_u\)考虑以\(u\)为根的子树中最多能留几个数,他的两个儿子内部的点只能在内部转移,你只能取一个儿子和另一个儿子的一个,也就是说我们的转移为\(dp_u......
  • 题解:CF888G Xor-MST
    题解:CF888GXor-MST题目大意:给定\(n\)个点的点权,任意两点间边权是点权的异或和。求这张完全图的MST的权值。思路:Boruvka+Trie树+按位贪心。关键就在于如何求出Boruvka中的best数组。考虑对点权建trie树,对于节点\(i\)本轮的连边,就是找“和它最相似”的那......