传送门


有点神仙的题目

首先注意到对于串\(s\),\(b=s_0\)一定会比\(b = s_0 \bigoplus 1\)更优

考虑先分析linear串的性质。注意到位运算考虑按位处理。我们考虑\(x\)的最高位,如果\(x\)的最高位为\(1\),那么linear串的前后两半的异或和为\(0\),否则前后两半完全相等。那么可以得到一个重要的性质:对于一个linear的串,把其分为前半段和后半段,前半段和后半段要么相等,要么完全不同,对于前后两半段还需递归满足这个条件。

好像有这个性质也没有什么用,但是注意到每一次的修改是区间取反,这在差分数组上会体现为两个位置的修改,比较方便。所以我们考虑差分处理。我们不妨分析一下差分之后linear串的性质。设\(t_i = s_i \bigoplus s_{i-1} , i \in [1 , |s|)\)。对于差分数组\(t\),因为\(s\)的前半段和后半段相等,所以差分数组除了\(\frac{|s|}{2}\)的位置可以随意取值,剩下的由\(\frac{|s|}{2}\)分开的两个差分数组对应位置相等,且分开得到的两个差分数组还需递归满足这个性质。

我们对于给出的\(01\)串进行差分,对于一个询问\([l,r]\)只需要将\([l+1,r]\)的差分数组用尽可能少的单点取反变为一个满足linear串差分数组性质的数组。注意到linear串差分数组的性质是一些位置的值相等,我们可以把这些值拿出来,用\(\min\{cnt_0 , cnt_1\}\)贡献答案,这样可以做到\(O(nq)\)。

最后需要考虑如何快速求出一个连通块内\(0/1\)个数。不难发现对于所有\(lowbit\)相等的位置会形成一个连通块(这个可以考虑所有\(lowbit\)相同的点,然后考虑自底向上时的连边情况,不难发现这些点连成一棵树且没有往外连边),然后记一下前缀和计算对于\(lowbit\)相等的所有位置的\(1\)的个数即可。

代码

CF1090H Linearization 构造、位运算、前缀和的更多相关文章

  1. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  2. leetcode - 位运算题目汇总(下)

    接上文leetcode - 位运算题目汇总(上),继续来切leetcode中Bit Manipulation下的题目. Bitwise AND of Numbers Range 给出一个范围,[m, ...

  3. 《分销系统-原创第一章》之“多用户角色权限访问模块问题”的解决思路( 位运算 + ActionFilterAttribute )

    此项目需求就是根据给用户分配的权限,进行相应的权限模块浏览功能,因为项目不是很大,所以权限没有去用一张表去存,我的解决思路如下,希望大家给点建议. 数据库用户表结构如下: 数据库表梳理: BankUs ...

  4. [位运算] [搜索] [递推优化] [计算几何] TEST 2016.7.15

    NOIP2014 提高组模拟试题 第一试试题 题目概况: 中文题目名称 合理种植 排队 科技节 源程序文件名 plant.pas/.c/.cpp lineup.pas/.c/.cpp scifest. ...

  5. 位运算-出现k次与出现一次

    题目:数组中arr只有一个数出现了1次,其他的数都出现了k次,请输出这个只出现了一次的数. 思路:这道题目要求使用位运算实现,如果采用数据结构Map就会简单很多.解此题前先了解不进位加法的思想,比如两 ...

  6. 位运算卷积-FWT

    问题 给出两个幂级数 \(f,g\) ,求 \[ h=\sum _i\sum _jx^{i\oplus j}f_ig_j \] 其中 \(\oplus\) 是可拆分的位运算. 算法 由于位运算具有独立 ...

  7. 多用户角色权限访问模块问题”的解决思路( 位运算 + ActionFilterAttribute )

    如果你还是不太懂位运算,请看我的文章:那些年我们一起遗忘的位运算! 下面是我在这次项目中学习到的,我眼中的位运算的应用!主要是实现 通知的3个操作: 1.  置顶 2.  设为首页 3.  同时为 “ ...

  8. BZOJ4245 ONTAK2015 OR-XOR 【位运算+贪心】*

    BZOJ4245 ONTAK2015 OR-XOR Description 给定一个长度为n的序列a[1],a[2],…,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的 ...

  9. [BZOJ1151][CTSC2007]动物园zoo 解题报告|DP|位运算

    Description 最近一直在为了学习算法而做题,这道题是初一小神犇让我看的.感觉挺不错于是写了写. 这道题如果是一条线的话我们可以构造一个DP f[i,j]表示以i为起点,i,i+1...i+4 ...

随机推荐

  1. win服务器 文件上传下载出现“未指定的错误” 解决方法汇总

    环境 WIN平台IIS服务器   经常出现于ASPX页面 汇总 1.权限问题 出现场景 : 基于ACCESS数据库   原因解析 : 1.首先需要排除自身问题,例如建表使用关键字,格式错误,插入数据与 ...

  2. P1270 “访问”美术馆——不太一样的树形DP

    P1270 “访问”美术馆 dfs读入,存图有点像线段树: 在枚举时间时,要减去走这条边的代价: #include<cstdio> #include<cstring> #inc ...

  3. python下浏览器静默运行驱动

    此处以chromdriver为例,放置driver路径问题参看上一篇问题.和java处理差不多,python实现静默运行方式如下 首先解答为什么进行静默运行? 我们在本地一般便于调试可以用GUI界面运 ...

  4. HTTP协议复习

    HTTP请求/响应的步骤: 客户端连接到WEB服务器:浏览器与web服务器的HTTP端口建立一个TCP套接字连接,例如:http://www.baidu.com 发送HTTP请求:通过TCP套接字,客 ...

  5. win10 启动后会自动恢复上次关机前的应用

    转载:https://www.v2ex.com/t/425101

  6. bat curl 定时请求

    @echo off :loop call:sleep 30 ::调用方法call:sleep [毫秒] (1秒=1000毫秒) curl https://stage.coolfen.com/suppl ...

  7. 转 : 请问mysql如何确定一个库是主库还是从库。

    select user,host from mysql.user;SELECT Repl_slave_priv,Repl_client_priv,super_priv,host FROM mysql. ...

  8. 查询、下载GWAS目录数据的R包(gwasrapidd)

    目前GWAS方向发了很多文献,但是并没有一个很完善的R包对这些文献的数据进行汇总. 接下来推荐的这个是最新发表的GWAS数据汇总R包​.看了一下功能齐全,但是数据不是收录的很齐全​. 下面具体讲一下. ...

  9. Nginx - 代理后端通过域名访问

    目录- 前言- Nginx 根据域名反向代理- Nginx proxy_pass 关于 '/' 的作用 1. 前言 接到一个需求,通过nginx 代理互联网上某一个页面,刚开始的时候觉得很简单的,直接 ...

  10. [LeetCode] 59. Spiral Matrix II 螺旋矩阵 II

    Given an integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order. For ...