数据结构泛做

为啥这个一向很讨厌ds题的人会在临考前做根号题呢,懂得都懂.

(因为上课只有想这种不用脑子的东西才能想出来)

10月15日 CF edu F题

不知道这题我为啥要想这么久,看来是应该好好休息一下了

大意就是单点修改,询问[l,r]区间每个数的出现次数是否都是k的倍数

第一,要知道分块是可以O(1)区间查询 O(sqrt)单点修改的

第二,要知道分块是可以O(1)区间修改,O(sqrt)区间查询的

首先,一年半前这个题的不带修弱化版本我是在牛客上看到过的,就是从左往右数,把每个颜色的第c次出现的位置, 赋上权值c%k.这样相当于把几种颜色变成了个不断更新的数组,问这个数组在l-1时刻和在r时刻是否相等,这个当然是哈希.

然后对于出现次数cnt<=sqrt n的颜色,自然是可以继续使用这个方法的.因为对于这些颜色,k<= sqrt n.枚举每个可能被问到的k,修改的时候把这个点后面的哈希值加同一个数.需要差分,用第二种分块

对于出现次数>=sqrt n的,由于不超过sqrt n个,可以直接在询问时挨个算区间内出现次数,用分块实现sqrt(n)的单点修改和O(1)的区间查询.用第一种分块就行了.

细节比较繁琐,但挺好卡过去的......

ZJOI2022 众数

这个是信息课和午休的时候想的,想了很久,感觉很妙

我们枚举任意的(i,j),i是外众数,j是内众数.

显然,只要i,j任何一方的出现次数>=sqrt 都是可以用前缀和做掉的,因为最大子段和可以缩成相邻的正数负数来做,大大减少了数量.

所以只要考虑双方都<=sqrt的情况了.所以先把这些数拿出来形成一个新的序列.这些数的出现次数小,可以枚举选取的区间(区间两端点必然是这个外众数).需要求区间众数吗?大可不必,只要按顺序枚举区间左端点l,在向右跳到下一个相同颜色的过程中,每个不同颜色出现次数的序列会发生变化.移动左端点的过程中,可以暴力更新这个在不同时刻的序列,只要在每个位置存储sqrt个数(变成了一个矩阵),第i个数表示在[l,当前位置]中出现次数为i的有几个,每次修改就相当于把这个矩阵的某一行减去1,下一行加1,总共进行不超过sqrt种修改即可.好想亲自体验一下省选啊,上次参加已经是初二了,当年又不好好打,留给我的机会不多了,一定要抓住啊!!!不要辜负我多年来的汗水和泪水啊!!!


CF1716E:

因为换的块都是整的,所以两次重复操作可以抵消

同时这个题还是蛮经典的,转成左右子树交换的形式

搜2^18种状态,若某层为1则换掉左右子树,线段树区间合并

但不知道场上为啥过不了

似乎神九也是这么写的

其实场上想了很久的根号做法,但一直不知道<=9的k咋搞

等一手题解

好吧题解也是这么做的

CF1716F:

把指数拆开

交换前后项

套组合意义

NC某个题:

题意是给m个条件形如[L,R]是回文串,问最后能判断几个i满足[1..i]==[n-i+1..n]

并查集常规要N^2

把串倒过来接在后面,前一段连后一段,连的边就变成顺的

目标是把每个元素都连到各自的一个集合里

于是把连的区间二进制分解成log个,连到反串对应区间

类似线段树pushdown,把大区间步步分成两个子区间,与对应的反串合并。

因为一个区间只用最后合并到一个集合里,所以每个点pushdown只要一次,就把时间省下来了。

不平凡的线段树优化建图


很久之前在医院里口胡了个 @血色黄昏 发的题,原题太水我给它升级了一下,今天难得有得休息,就写一下

话说我tm比正常新高一还忙!(

给定a1...an (ai∈INT)每次可以随意把序列中一个数修改到[1,Ri](1<=i<=q,操作独立,Ri∈INT)范围内,每次对询问的Ri回答gcd>1的原序列子区间最多能修改到多少个。

n q 均在1e5级别,而ai,Ri太大,于是思路就很清晰了

首先考虑单独询问怎么做

显然先线段树一波求出前后缀的答案,然后算包含某个点的gcd区间。

因为从一个点开始取gcd,只有均摊 ln n个取值 ,用尺取法算出每个前缀gcd对应后缀最多取到哪里。 单log可以解决

询问有q次,把询问排序以后直接暴力推指针会T。

但每个点其实只有一个ln ^ 2个拐点的分段函数,于是把这些拐点放到vector里做扫描线。按顺序加、删、求最大值。复杂度 O (n ln^2) 常数较大,实际效果类似于2log ,太慢了,HG的百年老机只能勉强卡过。

事实上,初始时序列可以砍成几段gcd>1的段,整段整段跳,然后对断点单独求,快很多。HG机上都可以跑到2e5,本地1e6无压力。

不要问我为什么这种垃圾题都要写,我不在HG,是一叶在群里问的,太久没做题了才有点新鲜感,结果一看真tm无脑题,怪不得HGOI这么屑

怪不得我配不上学OI!!!

posted @ 2023-07-12 17:01  Anticipator  阅读(38)  评论(0)    收藏  举报