2019暑期金华集训 Day1 数据结构
自闭集训 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 图腾
连续段的做法
- 分治(?)
- \(\max-\min=r-l\)
- 对\(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 数据结构的更多相关文章
- 2019暑期金华集训 Day1 组合计数
自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- 2019暑期金华集训 Day6 计算几何
自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...
- 2019暑期金华集训 Day7 分治
自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一 ...
- 2019暑期金华集训 Day7 动态规划
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- 2019暑期金华集训 Day5 生成函数
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...
- 2019暑期金华集训 Day3 字符串
自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...
- 2019暑期金华集训 Day3 图论
自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...
随机推荐
- [二叉树算法]关于判断是否为BST的算法
//判断是否为BST 搜索树==二叉排序树 1.递归知最大最小值.2.先中序判是否单调 bool IsValidBST(BTNode *p,int low,int high){ if(p==NULL) ...
- K-th occurrence HDU - 6704 (SA, 主席树)
大意: 给定串$s$, $q$个询问$(l,r,k)$, 求子串$s[l,r]$的第$k$次出现位置. 本来是个简单签到题, 可惜比赛的时候还没学$SA$...... 好亏啊 相同的子串在$SA$中是 ...
- Spring Cloud Alibaba学习笔记(12) - 使用Spring Cloud Stream 构建消息驱动微服务
什么是Spring Cloud Stream 一个用于构建消息驱动的微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互, ...
- 记https在Android浏览器无法访问
问题描述 M站静态资源单独配置的https域名,在Android原生浏览器里面打开之后提示证书不安全,在chrome.UC之类的浏览器之下,静态资源都能够正常访问 问题原因 CA证书链不完整 http ...
- JavaScript中对null和undefined的理解
前沿: 今天工作中遇到了监视一个变量是undefined,结果判断写的是==null 返回值是true,这个结果引起了我对这两个东西的兴趣. 查询了相关的文章理解并测试了.发现有以下特点: 1.广义上 ...
- css 盒子 取值
盒子:当我们设置一个标签宽高时,默认设置的是盒子里面content大小. 内容盒:content 填充盒:content+padding(overflow截取的区域) 边框盒:content+padd ...
- echarts使用结合时间轴timeline动态刷新案例
1.echarts简介 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...
- Java集合框架介绍。Java Collection Frameworks = JCF
Java集合框架 = Java Collection Frameworks = JCF . 为了方便理解,我画了一张思维脑图.
- laravel withCount 统计关联数量
roleModel定义关联 hasmany public function users(){ return $this->hasMany('App\Models\Users', 'role_i ...
- iveiw DatePicker 只能选择本月之前的日期,本月包括之后都不能选择
日期判断只能选择本月之前的日期 <DatePicker type="date" :options="options3" format="yyyy ...