首页 > 其他分享 >CF1083F The Fair Nut and Amusing Xor

CF1083F The Fair Nut and Amusing Xor

时间:2023-07-20 17:36:35浏览次数:41  
标签:Xor 数列 单点 Nut CF1083F 修改 异或 操作 oplus

简要题意:

给你两个序列 \(a,b\),一次操作可以将 \(a\) 的某一个长度为 \(k\) 的子区间全部异或上任意值,\(f(a,b)\) 为使得 \(a\) 和 \(b\) 相同的最少的操作数量。

支持单点修改 \(a,b\),并在开头和每次修改后输出 \(f(a,b)\) 的值。

\(n,k,q\le 2\times 10^5,w\le 2^{14}\)。

题解

首先可以把区间异或的操作变成单点修改,作差分 \(ca_i=a_i \oplus a_{i-1}\),\(cb_i=b_i\oplus b_{i-1}\)。那么一次操作 \([l,l+k-1]\) 相当于给差分数组上 \(l,l+k\) 异或上一个值。

要让 \(a,b\) 相等,让它们的差分数组相等即可。若令 \(c_i=ca_i\oplus cb_i\),即要求 \(c_i\) 元素全部为 \(0\)。

考虑单点修改 \(a/b\) 序列,对于一次修改 \(p\),其实就是修改 \(c\) 序列的第 \(p\) 和第 \(p+1\) 位。操作还是选取一个 \(l\),给 \(c_l,c_{l+k}\) 同时异或一个值。

对于两个位置 \(p\) 和 \(q\) 在模 \(k\) 意义下,如果 \(p,q\) 不同,在这两个位置上进行的操作也是独立的。把模 \(k\) 同余的全部拎出来,可以组成 \(k\) 个数列,每次操作相当于选取某个数列相邻两项异或同一个数。以下讨论是针对 \(k\) 个数列其中一个进行的。

操作顺序显然是不重要的,并且在同一位上的所有操作都可以合并。那我们钦定从左到右操作。不难发现,对于一个数列,上面的位置 \(p\) 需要被操作当且仅当它的前缀异或和不为 \(0\)。

于是我们现在维护单点修改、查询前缀异或和不为 \(0\) 的位置的个数即可。

如果是无解的话,那就是整个数列的前缀和都不为 \(0\),判一下即可。

使用分块,复杂度 \(O(m\sqrt n)\)。

评测记录。

标签:Xor,数列,单点,Nut,CF1083F,修改,异或,操作,oplus
From: https://www.cnblogs.com/Ender32k/p/17569003.html

相关文章

  • CF1456E XOR-ranges
    题面传送门好题。首先比较自然的,相当于按照数位DP的方法,将\([l,r]\)剖成\(k\)段,其中每一段都是最高若干位确定,底下若干位任取的形式。这样在\([l,r]\)里面选择相当于在这\(O(k)\)个区间里面选择。然后假设我们依次选择好了,考虑如何计算答案。答案显然是位独立的,对于......
  • spring的工具类BeanUtils.copyProperties 非基本数据类型时的坑
    复现前准备三个类,Student、Source、Target。Source和Target里面包含一个相同的非基本类型的字段(如下面示例中的stu字段)publicclassStudent{privateStringname;publicStudent(Stringname){this.name=name;}publicStringgetName(){......
  • AMD ZCU106 U-Boot 2023.1 Open Source Flow 编译的缺少“gnutls/gnutls.h”错误
    AMDZCU106U-Boot2023.1OpenSourceFlow编译的缺少“gnutls/gnutls.h”错误获取代码以下列命令获取U-Boot代码petalinux-devtoolmodifyu-boot-xlnx在目录components/yocto/workspace/sources/u-boot-xlnx下应该有u-boot-xlnx的源代码。获取配置文件查找u-boot的配......
  • ubuntu系统安装jdk报错debianutils : Breaks: x11-common (< 1:7.7+23~) but 1:7.7+19
    问题:Ubuntu系统执行aptinstallopenjdk-8-jdk 安装jdk8报错root@2b6d781ebc36:/#aptinstallopenjdk-8-jdkReadingpackagelists...DoneBuildingdependencytree...DoneReadingstateinformation...DoneSomepackagescouldnotbeinstalled.Thismaymeanthatyo......
  • scala class、Map、List 转换成Json(Gson、json4s、JSONUtil)
    实例代码importcn.hutool.json.JSONUtilimportcom.google.gson.GsonobjectEntitytoJsonTest{defmain(args:Array[String]):Unit={valgson=newGsonvalpeople=JJ("gl",12,List("basketball","baseball"),......
  • AtCoder Beginner Contest 308 G Minimum Xor Pair Query
    洛谷传送门AtCoder传送门考虑没有删除操作怎么做。可以动态维护\(ans\),新加进来一个\(x\),我们计算\(\min\limits_{y\inS}x\oplusy\)。对\(S\)建01Trie,然后从高位往低位按位贪心,在01Trie上优先往与\(x\)这一位相同的方向走,但是前提是它的子树内有数,对于01Trie......
  • Common BeanUtils组件的使用(源码)
    CommonBeanUtils组件方便了对JavaBean的使用。其中的一些类方法,使我们使用JavaBean得到了便利。 使用CommonBeanUtils组件需要三个Jar包,分别是commons-beanutils-1.8.0-BETA.jarcommons-logging-1.1.1.jarcommons-logging-api-1.1.1.jar 可从官网下载,不过为了方便,我把三个包传......
  • ubunut 虚拟机 , 编译过程中, 内存爆满, 卡死 ,重启后报错。
    问题: 在虚拟机中编译linux 过程中,内存沾满,之后强制重启,之后,虚拟机无法启动。报错如下:  解决的方法就是,找到虚拟机的文件夹,然后删除以.lck后缀的文件夹,所有的都产出,重启就可以了。 ......
  • 安装oh-my-zsh报错fatal: gnutls_handshake() failed: Error in the pull function的
    今天在安装oh-my-zsh时碰到一个安装问题,报错内容如下:root@ubuntu18:~/ohmyzsh/tools#./install.shCloningOhMyZsh...InitializedemptyGitrepositoryin/root/.oh-my-zsh/.git/fatal:unabletoaccess'https://github.com/ohmyzsh/ohmyzsh.git/':gnutls_handshake()......
  • UVA12716 GCD等于XOR GCD XOR
    UVA12716GCD等于XORGCDXOR一道数学题。 首先,我们可以知道,a-b>=gcd(a,b)=c;其次,a-b<=axorb=c;综上,可得a-b=c,即a-b=axorb.由于范围不大,直接枚举。第一层枚举c(因为c较少),第二层枚举a,(b=a-c) 再判断c是否等于a^b即可。#include<bits/stdc++.h>usingnamespacestd;......