自闭集训 Day1

数据结构

CF643G

用类似于下面的方法,搬到线段树上。

如何合并两个集合?先全部放在一起,每次删掉最小的\(cnt_i\),然后把其他所有的\(cnt\)都减去\(cnt_i\),直到还剩下\(k\)个。

\(O(n)\)众数

如果众数出现次数大于\(n/2\),那么搞一个\(cnt\)和一个\(ans\)。从左往右扫,如果与\(ans\)相同那么\(++cnt\),否则\(--cnt\)。如果\(cnt<0\)那么更换\(ans\)。

如果大于\(n/3\),那么搞两个。如果相同那么++,否则两个都--。

以此类推。

更正:似乎如果有\(cnt=0\)的直接先换,否则才减。

HDU6087

可持久化平衡树,用类似于快速幂的东西支持复制。

CF453E

如果恒定\(l=1,r=n\),那么可以想到把马按恢复时间排序,每次查询的时候一定会有一个前缀全部恢复完,后面的则是\(t\sum v\)。

拓展到一般情况,可以发现对于上一次清0的时间,序列会分成若干个区间,而且区间总变化量\(O(n)\),所以可以主席树记录区间内\(v\)在某个区间的个数,暴力扫一遍要查询的区间,最后合在一起。

CF1172F

维护分段函数\(f(x)\)表示\(x\)进去后会变成\(f(x)\),显然最后函数复合在一起段数不超过\(r-l+1\)。

使用线段树,求出每个节点对应的分段函数。

合并左右儿子的时候直接two pointers,可以证明复杂度是对的。

最后询问的时候把\(\log n\)个节点拖出来,在每一个节点二分得到出来的函数值。

复杂度\(O(n\log n+m\log^2 n)\)。

CF1178G

先不考虑绝对值。分块,每个块中维护\((a_i,a_i\times b_i)\)的凸包。每次求答案的时候相当于求\(\max\{y+tx\}\),直接做即可。

考虑绝对值的做法大同小异?

ICPC 2018 Beijing E

可以发现\([l,r]\oplus x\)仍然对应一个区间,只不过下标顺序有所改变。

所以可持久化线段树。

CF297E

CTSC 图腾

连续段的做法

  1. 分治(?)
  2. \(\max-\min=r-l\)
  3. 对\(r\)维护点数-边数/连续段个数(?)

第三种:对于区间\([l,r]\),如果\(x,x+1\)都出现在里面,那么连一条边,于是当且仅当点数减边数为1时是连续段。

\(r\)从左往右扫,维护\(cnt_l\)表示点数-边数。如果\(a_r+1,a_r-1\)出现过那么在某个区间-1。

CF997E

先离线,然后用上面方法开始搞。

如果能维护\(ans_l\)表示做到当前\(r\)时\(cnt_l\)有多少次是1,那么就很容易得到答案。

使用线段树,设\(tag_x=k\)表示对\(x\)区间最小值位置加\(k\)。

发现这个\(tag\)非常优秀,各种操作都可以支持,就做完了。

CF1034D

二分第\(k\)大的价值是多少,显然\(l\)有单调性可以two pointers。维护每个地方\([1,r]\)中最晚是什么时候被覆盖,那么加区间就是一个区间赋值。由于区间改变量\(O(n)\),所以可以直接\(set\)维护区间,很容易得到当前颜色为\(x\)的长度,于是有\(O(n\log^2 n)\)的做法。

由于区间的改变量与外层二分的东西无关,所以可以先跑一遍,然后每次二分的时候\(O(n)\)判。

计算总和也可以用类似的方法。

CF896E

分块。

在每个块内,如果改的是\(x\),且值域\(\le 2x\),那么把大的那些连到小的去;否则小的连到大的去,且打一个减\(x\)的标记。

于是可以用\(O(x)\)的复杂度使得值域范围减小\(O(x)\),所以总复杂度\(n\sqrt{n}\)。

CF1148H

把恰好为\(k\)改成至少为\(k\)。

假设可以离线。

对于一个\(r\),我们要求最小的\(r'\),使得在\(r'\)时\(k\)前缀最小值大于等于\(l\)。此时答案就是从\(r'\)到\(r\)所有版本里面\(\min-l+1\)之和。

然后……就不会了……

2019暑期金华集训 Day1 数据结构的更多相关文章

  1. 2019暑期金华集训 Day1 组合计数

    自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...

  2. 2019暑期金华集训 Day5 树上数据结构

    自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...

  3. 2019暑期金华集训 Day6 计算几何

    自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...

  4. 2019暑期金华集训 Day7 分治

    自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一 ...

  5. 2019暑期金华集训 Day7 动态规划

    自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...

  6. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  7. 2019暑期金华集训 Day5 生成函数

    自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...

  8. 2019暑期金华集训 Day3 字符串

    自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...

  9. 2019暑期金华集训 Day3 图论

    自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...

随机推荐

  1. 海思HI35xx平台软件开发快速入门之H264解码实例学习

    ref :https://blog.csdn.net/wytzsjzly/article/details/82500277   前言 H264视频编码技术诞生于2003年,至今已有十余载,技术相当成熟 ...

  2. 关于window.location.hash的理解及其应用(转)

    原文1:https://blog.csdn.net/zhuchuji/article/details/50736360 原文2(window.location.href和window.location ...

  3. idea 控制台 彩色打印日志

    IDEA右上角:Edit Configurations,点击,找到VM options,填入-Dspring.output.ansi.enabled=ALWAYS. 重新启动应用,就会发现控制台日志变 ...

  4. Oracle触发器编译错误及解决方案

    错误 TRIGGER **** 编译错误 错误:PLS-00103: 出现符号 "END"在需要下列之一时:        ( begin case declare exit    ...

  5. EfCore基本用法

    db first 和 code first的基本使用方法 https://www.cnblogs.com/Starts_2000/p/mysql-efcore20-codefirst-dbfirst- ...

  6. springboot启动流程(目录)

    springboot出现有段时间了,不过却一直没有怎么去更多地了解它.一方面是工作的原因,另一方面是原来觉得是否有这个必要,但要持续做java似乎最终逃不开要去了解它的命运.于是考虑花一段时间去学习一 ...

  7. ble编程-外设发送数据到中心

    一.外设 1.在外设的.h文件中定义如下   1 //周边管理者 2 3 @property (nonatomic , strong) CBPeripheralManager *peripheralM ...

  8. iOS copy和mutableCopy 整理

    copy 和 mutableCopy 你真的理解吗?最近发现很多面试者基本都不能很好地回答这个问题.所以整理一下. copy和mutableCopy的概念: copy 浅拷贝,不拷贝对象本身,仅仅是拷 ...

  9. SVN上传本地项目到服务器

    1. 在服务器新建一个文件夹目录: 2. 将新建的目录在本地check out下来: 3. 将自己的项目拷贝到check out下来的文件夹下: 4. 右键点击svnàAdd,选择所有添加: 5. 右 ...

  10. Redis其他数据结构

    用户日活月活怎么统计 - Redis HyperLogLog 详解 HyperLogLog 提出问题 我们先思考一个常见的业务问题:如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站每个网页 ...