[Ynoi2018]天降之物

2024-03-16 22:48
文章标签 ynoi2018 天降 之物

本文主要是介绍[Ynoi2018]天降之物,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

天降之物

题解

只有 ** 出题人才会出这种又难调又卡常的 ** 题。

笔者原先很快奶出了一个 O ( n n log ⁡   n ) O\left(n\sqrt{n}\log\,n\right) O(nn logn)的做法,然后调了一个下午,交上去后死活过不了,只好又优化了半天优化出了一个 O ( n n ) O\left(n\sqrt{n}\right) O(nn ),又调了一个晚上,最后还调了半天块长才过。

首先,看到题面题目名我们应该很容易想到分块,当然,这里准确说应该叫根号分治。
对于每个不同的数,我们都维护一个有序数组,我们的修改操作相当于合并两个有序数组。
如果合并的两个数组都小于 S S S,直接像归并排序一样用指针合并就行了。
如果合并的两个数组都大于 S S S,由于合并是具有永久性的,这种合并当然也是有限的,不会超过 n S \frac{n}{S} Sn次,我们也可以像上面那样暴力合并。
但如果我们合并的两个数组一个大于 S S S,一个小于 S S S呢,这样显然是不能像刚刚那样合并呢。
但是这种一大一小的合并很容易让我们联想到启发式合并,将小的插入到大的里面去。
如何较快地在一个有序数列中插入一个数,明显就是一个 s e t set set的板子嘛。
所以我们可以对每个数都维护一个 s e t set set,前两种操作可以暴力重构 s e t set set,而下面这种就直接将小的 s e t set set一个一个插入到大的里面去即可。

既然是根号分治,我们自然想到需要维护大于 S S S的数组之间的答案,由于合并是永久的,我们大于 S S S的数组也只会增多,或者被合并,不会凭空消失。
所以,当一个数组变得大于 S S S时,我们可以 O ( n ) O\left(n\right) O(n)地将整个序列扫一遍,维护它与其它数组间的答案,这个只需要从左到右一次和从右到左一次,分别记录下距离每个点最近的属于该数组的点即可。
当两个大于 S S S的数组合并时,我们只需将它们的答案暴力合并即可。
当一个较小的数组插入到另外一个大于 S S S数组里面去时,我们同样可以对于插入的每一个点维护它与其它数字的距离。
由于每一个数只会插入到一个大于 S S S的数组一次,所以每个数自然也只会维护一次。
同样,如果求答案时是两个大于 S S S的数组,我们直接将我们记录的答案输出即可,如果存在小于 S S S的数组,我们可以就对于这个小数组的每个数看看它与另外一个的距离。

至于维护序列中的每个数现在应该是什么,我们可以采用并查集。
每次将 x x x连到 y y y上面后我们都新开一个节点,表示现在值为 x x x,先前值为 x x x的节点都连到 y y y上去了,而之后还会有其它值变成 x x x

容易发现,上面这种做法是时间复杂度是 O ( ( n − x ) n S + x n − x S l o g   S + n S l o g   S ) ⩾ O ( n n l o g   n ) O\left(\frac{(n-x)n}{S}+x\frac{n-x}{S}log\,S+nSlog\,S\right)\geqslant O\left(n\sqrt{n}log\,n\right) O(S(nx)n+xSn

这篇关于[Ynoi2018]天降之物的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816972

相关文章

P4117 [Ynoi2018] 五彩斑斓的世界

分析第一个操作 朴素的做法,遍历一遍大于x就-=x,极限复杂度O(mn) 分块做法 整块:我们维护一个最大值,从mx到x遍历一遍(减去x)用并查集操作merge(i,i-x),考虑mx=100001,x=1,极限复杂度O(mV) 我们可以分析 1.x>(mx/2),从mx到x遍历一遍,应该是最优的复杂度O(mx-x) 2.x<(mx/2),最优的复杂度应该是O(x),因此思考在这种

bzoj2287 消失之物 01背包

题目链接:bzoj2287(权限题qwq) 一开始看错数据范围了……打了一个极为暴力( O ( n 2 m ) O(n^2m) O(n2m))的暴力……暴力代码如下: 毒瘤代码1 #include<stdio.h>#include<cstring>#include<algorithm>#include<math.h>#define re register intusing name

神Bin天降|LOL手游超简单安装!安卓+iOS全都有!

英雄联盟手游开启公测了,不过遗憾的是,目前仅在日本、韩国、越南、泰国、马来西亚、菲律宾、新加坡等东南亚及东亚地区公测。   国服区还没有开。但这并不妨碍我们不能玩。今天老皮手把手教会大家,如何在其他区玩联盟手游版。   安安全全绿色的方法吗,通过正规游戏加速器来使用比如网易UU、迅游、biubiu等工具。   不仅能够访问,安卓和苹果的操作方法,今天都会仔细讲给大家,看就完事了。

按15分钟取数据_【数量技术宅|金融数据分析系列分享】套利策略如何神bin天降五杀,价差计算有诀窍...

更多精彩内容,欢迎关注公众号:数量技术宅01 价差计算的“误区” 我们在测试两个或多个金融资产相互运算产生的策略信号时,免不了需要涉及将不同的价格时间序列,按照时间轴进行对齐,套利策略就是其中之一。然而,大部分介绍套利策略、统计套利类的文章,对于价差序列的生成计算,处理的十分简单,基本就是两个时间序列相减。对于较为低频的信号,这样处理问题不大,但在中高频的信号领域,直接相减,会存在着一定的问

区块链如何联接互联网技术改革数字新经济之物联网

上一篇文章介绍了区块链与大数据之前的关系以及结合,这篇文章补充一下区块链与物联网之间的又有何联接。 区块链与物联网 什么是物联网? 物联网在之前被定义为通过射频识别(RFID)、红外线感应器、全球定位系统、激光扫描器、气体感应器等信息传感设备按约定的协议把任何物品与互联网连接起来进行信息交换,以实现智能化识别、定位、跟踪、监控和管理的一种网络,简言之物联网就是“物物相连的互联网”。 后来被重

RFID电动自行车与共享单车之物联网比较

目前比较热门的RFID电动自行车管理和共享单车,都是属于物联网范畴。它们之间有什么不同呢?   1、RFID电动自行车管理系统原理   RFID电动自行车管理,利用了有源RFID技术,使用基站SR8读取安装在电动自行车上的有源电子标签,如2.4GHz的SRD24T2或433MHz的SRD43P9。基站SR8读取到信息后,通过GPRS网络,将基站SR8自带ID信息和位置信息、有源电子标签ID信息发

印尼一男子用自拍做成 NFT市值超百万,是天降横财还是有人推波助澜?

1 月 12 日,海外加密社区被某 NFT 系列刷屏。 不是艺术品也不是无聊猿,这次刷屏的 NFT 只是一位印度尼西亚男性的每日自拍,名称就叫「Ghozali Everyday」 ▲「Ghozali Everyday」主页. 图片来自:OpenSea 1 月 10 日,Ghozali 将 933 张自拍照上传至全球最大的 NFT 交易平台 OpenSea,并制作成 NFT 售卖,每张 0.0

bzoj 5143 [Ynoi2018]五彩斑斓的世界

二阶堂真红给了你一个长为n的序列a,有m次操作        1.把区间[l,r]中大于x的数减去x        2.查询区间[l,r]中x的出现次数        题解:        今天模拟赛第一题=_=,把题看错,然后暴力打了30分跑路了。        由乃题肯定是分块了。        由于数字的大小只有十万,可以先假装