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\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...
随机推荐
- [转载] jmeter Bean Shell的使用
Jmeter有哪些Bean Shell 定时器: BeanShell Timer 前置处理器:BeanShell PreProcessor 采样器: BeanShell Sampler 后置处理器:B ...
- 🕯国家公祭日-默哀javascript脚本
国行公祭,祀我国殇 兽行暴虐,共御外侮 昭昭前事,惕惕后人 永失弗谖,祈愿和平 var national_memorial_days=['12-13']; var dateObj=new Date() ...
- GRPC代替webapi Demo。
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 现代高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现. 可用 ...
- Access-Control-Max-Age
app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCreden ...
- Detection综述
4月中旬开始,尝试对目标检测领域做一个了解,看了差不多6-7篇paper,在这里记录一下: 一.Detection简介 人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸外接矩形在图像中 ...
- jQuery效果之滑动
jQuery 滑动方法有三种:slideDown().slideUp().slideToggle(). jQuery slideDown() 方法用于向下滑动元素, 语法:$(selector).sl ...
- Java 之 字符输出流[writer]
一.字符输出流 java.io.Writer 抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地. 它定义了字节输出流的基本共性功能方法. void write(int c) ...
- K2 BPM_当K2遇上医药,用流程打通企业的任督二脉_业务流程管理系统
据调查,如今仍有60%的医药企业,存在合规经营和利润下降的困扰,在“研”.“产”.“供”.“销”的运营过程中,时时伴随着严苛的管理政策和法规.如何加强企业跨部门.跨组织.跨业务线的执行能力,始终是管理 ...
- Arc Engine二次开发——弹窗进行属性查询
在Arcmap中使用Sapefile格式的矢量数据时,经常会用到其属性查询的功能,弹出窗体然后用户鼠标点击或手动输入查询条件,进而查询到感兴趣的要素.在AE二次开发中也经常需要这个功能,于是在此记录整 ...
- LCD驱动的学习
简介: LCD是基于液晶的. LCD(liquid crystal display)按驱动方式分类可以分为静态驱动,简单矩阵驱动,主动矩阵驱动.其中,简单矩阵又可以分为扭转向列型(TN)和超转向列型( ...