ZROI 19.07.28 序列数据结构/jk
写在前面
dls:“我不会数据结构,但是APIO的数据结构场我写了,还是蛮简单的。”
T1 CF643G
Sol:
有一个\(O(n\log^2n)\)的做法:假设将区间排好序,取六等分点,则答案一定覆盖了若干点,求区间第\(k\)大即可。
然而会TLE
定义绝对众数为区间中出现超过一半的数。
有一个经典的做法求绝对众数,然而它要在保证有解的时候才保证正确性。
维护当前答案和出现次数,遇到相同则\(+1\),不同则\(-1\),降为\(-1\)的时候就把当前解替换。
显然如果有解的话,答案不会被替换掉(或者最后会换回来)。
可以扩展到\(p\not= \frac{1}{2}\)的情况,维护多个答案,调整加减权重即可。
可以用线段树维护上述操作。
顺便一提dls讲题的时候翻车了23333(被打死
线段树合并两个儿子的时候,先执行替换,再全部\(-1\)。正确性dls也不会不屑于证。
T2 HDU6087
Sol:
不会可持久化平衡树,告辞。
T4 CF453E
Sol:
序列可以分成若干段,每段都是同一时间清空的。
显然段的总数\(O(n)\)。
以按恢复满需要的时间为权建主席树,因为同一段恢复的时间是相同的,一次查询一整段,可以\(O(n\log n)\)做。
T5 CF1172F
Sol:
发现每个位置都是一个分段函数。
考虑用线段树维护区间内函数复合后的结果,可以证明长度为\(l\)的序列,对应的分段函数最多\(l+1\)段。
(证明:显然\(f(x)-x\)始终模\(p\)同余,且对于更大的\(x\),“减去的\(p\)”的个数必然不会更少。由于\([l,r]\)最多减去\(r-l+1\)个\(p\),故最多\(r-l+2\)段)
复合两个函数的时候可以双指针法,每次遇到左边的断点就在右边暴力回退,可以证明回退次数最多一次。
(这里本来应该有一个证明,可是它咕了)(貌似和上面证明有关?)
T6 CF1178G
Sol:
dls:“这题透露着一股垃圾题的气息。果然,\(n^2\)能过。”
标程是分块+凸包,lxl可能会喜欢
绝对值因为每个数只会变\(O(1)\)次,暴力做就好了。
对\((a_i, a_ib_i)\)建凸包,由于\(t_i\)单调,每次最大值只会右移。
复杂度\(O(n\sqrt n)\),据说带\(\log\)会被卡。
有一个非常有趣的邪道解法:
线段树维护凸包,每个节点计算一个\(wait\),表示再增加多少之后,这个节点的某个子树中,左右儿子大小关系就会改变。
每次修改只要不超过\(wait\)就可以打标记。
复杂度不会证明,但是跑的飞快。
T7
题意:维护一个序列,支持:
① 区间每个位置变成下标\(xor X\)的位置的值
② 区间每个下标\(xor X\)的位置变成这个位置的值
③ 区间xor
④ 区间下标二进制有奇数个1的位置的权值和
Sol:
可持久化trie维护一下,每次①②操作是一个子树复制,可能需要打标记啥的,dls懒得搞了(
T8 CF297E
Sol:
共有五种可能的情况,其中有一种很好算。
把线段看成点,两两之间如果相交连红边,否则连蓝边。
转化为统计同色三角形个数。
同色三角形\(=C(n,3)-\)异色三角形。
发现每个异色三角形恰好有两个异色角。
对每个点统计两种颜色的边个数即可。
T9 CF997E
Sol:
扫描线,对每个左端点维护到当前右端点的点数-边数\((x,x+1)\),记作\(cnt\)。
假设新加入了\(x\),将新加边的区间\(cnt\)修改。
线段树可以支持一种标记:对区间\(cnt\)最小值,\(ans+k\)。
然后就做完了。
T10 CF1034D
Sol:
\(k\)这么大,显然不能拿堆做。
可以二分答案。
判断的时候可以双指针。
每次加入\(r\)的时候把\(r\)对应的区间全部覆盖,判断的时候只需要知道\(>l\)的和。
可以用set维护,但是发现每次二分的时候,操作序列都是不变的。
因此预处理出每次操作之后的序列即可,复杂度\(O(n\log n + n\log T)\)。
T11 CF896E
Sol:
分块,用链表记录每块中为\(x\)的数。
在值域中启发式合并。
这样可以在\(O(x)\)内把某块的值域缩小\(x\)。
T12
题意:一个长为\(n\)的序列,支持对\([1,m],[m,r]\)归并排序(然而原序列无序,所以排序完也不一定有序),询问\(a_i\)
Sol:
发现可以划分成若干个段,每次按照段头归并。
可能会拆分若干段,但是每次最多合并一段。
平衡树维护即可。
T13 CF1148H
Sol:
不会。
ZROI 19.07.28 序列数据结构/jk的更多相关文章
- ZROI 19.07.28 组合计数/lb
T1 题意:\(n\)个变量,\(0 \leq x_i \leq c_i\),求\(\sum x_i = A\)方案数.\(n \leq 32\). Sol: \(n \leq 10\)的时候容斥很水 ...
- ZROI 19.08.01 树上数据结构
1.总览 LCT 链分治(树剖) 点/边分治 2.点分治 一棵树,点有\(0/1\),多次修改,询问最远的两个\(1\)距离. 建出点分树,每个子树用堆维护:①最远的\(1\)距离:②它的每个儿子的① ...
- ZROI 19.07.30 简单字符串/ll
写在前面:今天下午药丸--不会字符串,全程掉线/ll 给出字符串\(S\),\(q\)次询问,每次给出\(a,b,c,d\),询问\(S[a,b]\)的所有子串和\(S[c,d]\)最长公共前缀的最大 ...
- ZROI 19.07.31 AB班ACM
写在前面:非常感谢cjc和djh两位神仙带我,非常感谢他们给了我一次躺赢的机会. 虽然我被硬点成了代码手,但我写的基本每次都有一堆罚时.然而djh爷全部1A,tql. 题目按照一血时间升序,大致符合难 ...
- ZROI 19.07.29 线性代数入门/wq
1.高斯消元 在模意义下依然有效,对主元求逆即可. 甚至可以模合数,需要对两个方程辗转相除,复杂度\(O(n^3\log p)\). 辗转相除法只要能定义带余除法就有效. 逆矩阵:对于矩阵\(A\), ...
- ZROI 19.07.30 简单图论/kk
1.最短路 NOI2019 D2T1 我被这题送Fe了/lb 只有zz才会写二维线段树,比如我. 实际上你只需要矩形取min就可以. kd-tree可以随便过,最慢的点\(0.1s\). 另外一种简单 ...
- 07-09 07:28:38.350: E/AndroidRuntime(1437): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.googleplay.ui.activity.MainActivity" on path: DexPathList[[zip file "/data/app/c
一运行,加载mainActivity就报错 布局文件乱写一通,然后急着运行,报莫名其妙的错误: 07-09 07:28:38.350: E/AndroidRuntime(1437): Caused b ...
- ZROI 暑期高端峰会 A班 Day1 序列数据结构
FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...
- ZROI 19.08.07模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...
随机推荐
- 用Vue来实现音乐播放器(四十):歌单详情页布局以及Vuex实现路由数据通讯
1.歌单详情页是推荐页面的二级路由页面 将推荐页面歌单的数据传到歌曲详情页面 利用vuex 1.首先在state下定义一个歌单对象 disc{} 2.在mutaions-types中 定义一个别名 ...
- 【mysql】如何通过navicat配置表与表的多对一关系,一对一关系?设计外键的效果
背景: 现在要将接口自动化测试结果持久化,当前只是每次运行接口测试,将测试结果通过邮件发送给项目组成员.邮件内容如下: 表设计: 为了呈现这个结果:我设计了2张表run_result和run_deta ...
- Linux监控命令之==>free
一.命令说明 free 命令显示系统内存的使用情况:包括物理内存.交换内存(swap)和内核缓冲区内存 二.参数说明 -b -k -m -g:分别以字节.KB.MB.GB为单位显示内存使用情况 -l: ...
- gitlab在centos7.3上搭建
gitlab在centos7.3上搭建 最近接到gitlab+jenkins的任务,由于以前只接触过GitHub,并只是简单的使用,这里简单记录gitlab与jenkins搭建的 环境: centos ...
- 【RequestContext】关于RequestContext的一些小心得
版权声明:随意转载,注明出处 https://blog.csdn.net/River_Continent/article/details/77511389后台传参,一直是一个比较重要的地方,如果涉及W ...
- C 语言的运算符
算术运算 C 语言支持 + - * / % 五种运算,加减乘除取模. 所有 CPU 都内建加法器,可以完成加法操作.减法操作可以转为加法操作.大部分 CPU 都没有内置乘法器,此时编译器会把 * / ...
- jenkins自动化测试Email Extension邮件模板 及可用参数TEST_COUNTS ,FAILED_TESTS详细说明
先列出模板内容: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <t ...
- CentOS7linux通过http配置共享自动创建yum源的shell脚本
因工作需要用到,所以记录一下配置流程 环境介绍: 两台CentOS7系统 yum源服务主节点IP:192.168.1.78 从节点IP:192.168.1.79(79从78上获取yum源) 配置78节 ...
- Python内置函数compile
英文文档: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) Compile the source i ...
- SparkStreaming DStream转换
1.无状态转换操作 (1)无状态转化操作就是把简单的RDD转化操作应用到每个批次上,也就是转换DStream中的每一个RDD. 部分无状态转化操作: (2)尽管这些函数韩起来像作用在整个流上一样,但事 ...