洛谷 P5066 [Ynoi2014] 人人本着正义之名

Problem

对一个01序列进行以下\(m\)个操作:

  1. 区间覆盖为0
  2. 区间覆盖为1
  3. 将区间\([l,r-1]\)中的数\(a_i\)同时变为\(a_i\)与\(a_{i+1}\)按位或的值
  4. 将区间\([l+1,r]\)中的数\(a_i\)同时变为\(a_i\)与\(a_{i-1}\)按位或的值
  5. 将区间\([l,r-1]\)中的数\(a_i\)同时变为\(a_i\)与\(a_{i+1}\)按位与的值
  6. 将区间\([l+1,r]\)中的数\(a_i\)同时变为\(a_i\)与\(a_{i-1}\)按位与的值
  7. 查询区间和

强制在线。

\(1\le n,m\le 3\times10^6,0\le a_i\le1\).

Solution

刚开始思考的时候,看到数据范围中有着随机生成这个部分分,想到了珂朵莉树(毕竟背景是珂朵莉嘛~)。

但是貌似珂朵莉无法对操作\(3,4,5,6\)进行很好的维护。

又注意到这个序列只有01,这里可是一个突破口!

我们手玩一下样例中的01001

首先分段:

\[[0][1][00][1]
\]

操作\(3\):

\[[11][0][11]
\]

可以发现,所有的0段的最右边的0都变成了1,也就是所有的1段的长度向左扩展了1位(如果它的左边还有的话)。

操作\(4,5,6\)也类似,每次一种段只会有边界上的改变。

这个貌似就很好维护了。

但是我们都知道,珂朵莉维护的是一段值相同的区间,却不一定随时都是极长的。

即,我们需要让一个0段的左右保证是1段(或者没有)。

我们手写一个平衡树(而不用set)来维护这些子段。因为左/右端点移动量显然是可以叠加的,可以在平衡树上打标记维护。

但是有两个问题:如何保证每个子段都是极长的?如何保证没有空的子段?

如果子段不是极长的,那么就会有相邻的同值子段,其中一个移动边界时会占领另一个,但是显然不需要移动。对于这个问题比较简单,只要在区间赋值的时候多向两遍拓展即可。其他的操作都是不会造成这种非极长子段的。

当我们在移动边界的时候,会出现一个子段的长度已经变成了0的情况,会导致总段数剧增,无法保证时间复杂度。

在平衡树上再维护两个值:子树中最短的0/1段长度即可。

发现有长度为0的段时直接暴力删除。

平衡树的一个节点维护了:左端点,右端点,子段的值,子树和,子树中0段的数量,子树中1段的数量,子树内最短的0段,子树内最短的1段,lazy标记。

然后这道题就结束了。

Code

按照传统(?),只给部分代码供参考。有问题也可以私信(如果我还没AFO的话)

剪切板

Other

唉,2021年了,这道题需要一点卡常了……

原本\(Ynoi\)是很友好的,但是有些人用错误的时间复杂度乱搞过去了,所以只能加强加强再加强,导致正解想要过去也比较困难了……

\(\textbf{2021-03-31 08:00:25 thus,AC.}\)

附上debug日志。祝您早日AC。

洛谷 P5066 [Ynoi2014] 人人本着正义之名的更多相关文章

  1. C++ 洛谷 2014 选课 from_树形DP

    洛谷 2014 选课 没学树形DP的,看一下. 首先要学会多叉树转二叉树. 树有很多种,二叉树是一种人人喜欢的数据结构,简单而且规则.但一般来说,树形动规的题目很少出现二叉树,因此将多叉树转成二叉树就 ...

  2. 「树形DP」洛谷P2607 [ZJOI2008]骑士

    P2607 [ZJOI2008]骑士 题面: 题目描述 Z 国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的 ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  8. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  9. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  10. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

随机推荐

  1. httprunner 断言报错 expect_value 和check_value类型不一致

    csv 源码 drillCode,drillName,code,msg y500,牙轮500,200,操作成功 YL201,牙轮201,500,牙轮编号已存在 运行后报错 E httprunner.e ...

  2. Linux下yum安装mysql 遇到的问题Can't open and lock privilege tables: Table 'mysql.user' doesn't exist 错误

    今天在linux下安装mysql时 执行service mysqld start时, mysql总是启动失败 后来查看mysql日志:/var/log/mysqld.log,发现有个Can't ope ...

  3. 基于 .NET Blazor 开源、低代码、易扩展的插件开发框架

    前言 今天大姚给大家分享一个基于 .NET Blazor 开源的轻量级.跨平台.低代码.易扩展的插件开发框架:Known. 项目介绍 Known 是一个基于 Blazor 的轻量级.跨平台.低代码.易 ...

  4. bug|electron-vue 使用 electron-builder 打包,执行 yarn run build 报错原因

    问题 & 解决 官方BUG:tasks 重复: yarn run build yarn run v1.22.22 $ node .electron-vue/build.js && ...

  5. 前端打包发布以及小程序发布(IIS下部署前端站点)

    作为后端程序员 一直没有摸索过前端项目的打包发布,因为项目需要 这次经历一个 前端项目以及小程序的打包发布,记录一下.   一.前端部署   部署过程种一直出现node-sass 问题 https:/ ...

  6. 【教程】Windows10系统激活

    Windows10系统激活 一.找一个激活码 到百度搜索,筛选发表日期在最近一个月或者一周之内的 二.以管理员身份打开cmd 按Win+R键,输入cmd打开命令行窗口 按Ctrl+Shift+Esc键 ...

  7. TJSON的烦人的泄漏

    System.Json中的JSON应该说还是好用的,因为相关superObject的json使用,转换过来概念思路上有点混淆搞不清. 正题:老是泄漏.一会儿是TJSONArray,一会儿是TJSONO ...

  8. 本地学习环境minikube安装

    有感于K8S太强大和自己的太无知,索性来系统学习下K8S.网上一番攻略,起码先得有个本地学习环境,所以安装一个minikube,下面记录安装过程,供有需要的人使用. 看看minikube架构: 我是在 ...

  9. lua随写

    --local util={}--function util.Split(str, sep)-- local sep, fields = sep or ":", {}-- loca ...

  10. VMware平台的Ubuntu部署完全分布式Hadoop环境

    前言: 此文章是本人初次部署Hadoop的过程记录以及所遇到的问题解决,这篇文章只有实际操作部分,没有理论部分.因本人水平有限,本文难免存在不足的地方,如果您有建议,欢迎留言或私信告知于我,非常感谢. ...