Ynoi
P4688 [Ynoi2016] 掉进兔子洞
序列,静态,求三个区间的可重集的交的大小,离线,\(n,Q\le 10^5\),3s,500MB
缺乏性质 \(\rightarrow\) bitset
静态区间 \(\rightarrow\) 莫队化为单点改
bitset 支持取交,\(x\) 重复 \(cnt_x\) 次即可,空间 \(O(n^2/w)\),时间 \(O(n\sqrt n+{n^2\over w})\),分三次处理减小空间常数
P4690 [Ynoi2016] 镜中的昆虫
序列,区间赋值,区间数颜色,离线,\(n,Q\le 10^5\),1s,64MB
数颜色 \(\rightarrow\) 维护 pre
珂朵莉树 \(\rightarrow\) pre 只改变 \(O(Q)\) 次
转化:单点改 pre,查询 \([l,r]\) 内 pre 小于 \(l\) 的数量
- 树套树,在线,空间 \(O(n\log n)\),时间 \(O(n\log^2 n)\),过不去
- CDQ,离线,空间 \(O(n)\),时间 \(O(n\log^2 n)\),正解
P5064 [Ynoi2014] 等这场战争结束之后
图,动态加边,回退到某历史版本,查询某个连通块中权值第 \(k\) 小,离线。\(n,Q\le 10^5\),500ms,20MB
回退历史版本 & 可离线 \(\rightarrow\) dfs 操作树转为撤销
第 \(k\) 小 & 可合并 \(\rightarrow\) 值域分块 或 bitset
值域分块
值域每 \(B\) 个分成一块,按块离线,记录每个连通块点数。
- 合并、撤销连通块:暴力 \(O({n^2\over B}\log n)\),注意到并查集操作对每个值域块相同,预处理可 \(O(n^2/B)\)。
- 查询连通块第 \(k\) 小:
- 枚举值域内每个数判断,\(O(nB\log n)\)。
- 每个并查集开桶,\(O(nB)\),空间 \(O(nB)\),\(B\) 需要开很小。
- 使用链表维护,可以是有序链表归并(难写)或每次把链表所有数拿出来
nth_element,\(O(nB)\)。
总时间复杂度 \(O(n\sqrt{n\log n})\) 或 \(O(n\sqrt{n})\),空间线性。
bitset压位查询
bitset可直接 \(O(n/w)\)。不能开 \(n\) 个
bitset\(\rightarrow\) 对于点数小于 \(n/w\) 的连通块用链表维护,同时至多存在 \(w\) 个bitset,空间线性。链表查询,合并同上。链表并入
bitset可启发式暴力。总时间复杂度 \(O(n^2/w)\),空间线性。
P5354 [Ynoi2017] 由乃的 OJ
树,每个点的效果为 \(\operatorname{and}/\operatorname{or}/\operatorname{xor}\) 一个数,单点改,询问 \([0,z]\) 中所有数经过路径操作得到的最大值,无需离线。\(n,Q\le 10^5\),值域 \(2^{64}\),250ms,128MB。
二进制操作 \(\rightarrow\) 拆位
二进制复合 \(\rightarrow\) 压位处理复合矩阵,同时处理 \(k\) 位的复合,\(O(k)\rightarrow O(1)\)
总时间复杂度 \(O(n\log^2n+nk)\)
P6109 [Ynoi2009] rprmq1
二维平面,先修改后查询,矩形加,矩形求 \(\max\)。\(n\le 5\times 10^4,Q\le 5\times 10^5\),4s,512MB。
矩阵 \(\rightarrow\) 将一维时间化,离线问题转为在线问题
修改,询问在一段时间区间生效 \(\rightarrow\) 猫树转为对一段后缀有效(即修改后无需撤销,询问等价于查历史信息和)
区间加历史最值即可,时间复杂度 \(O(n\log^2n+Q\log n)\)
P6780 [Ynoi2009] pmrllcsrms
序列,单点改,求区间长度不超过 \(c\) 的最大字段和,其中 \(c\) 为全局定值,无需离线。\(n,Q\le 10^6\),6s,512MB。
长度不超过 \(c\) \(\rightarrow\) 每 \(c\) 个位置分一块,询问分为每块内全部或两相邻块之间
相邻块后前缀长度和不超过 \(c\) \(\rightarrow\) 直角三角形模式,分成一个矩形和两个小直角三角形
时间复杂度 \(O(n\log n)\)
P6783 [Ynoi2008] rrusq
二维平面,\(n\) 个带权点,\(m\) 个矩形,\(Q\) 次询问区间 \([l,r]\) 内的矩形并中点权之和,离线。\(n,m\le 10^5,Q\le 10^6\),4s,128MB。
静态区间,难以增量 \(\rightarrow\) 扫右维护左
点出现在区间并中 \(\rightarrow\) 扫右端点,维护每个点最后出现时间
KD-Tree,每次暴力收回子树内的出现时间 tag 即可
询问使用 \(O(1)-O(\sqrt n)\) 的数组维护
时间复杂度 \(O(n\sqrt Q+Q\sqrt n)\)
P7446 [Ynoi2007] rfplca
序列,区间减,询问 \(fa\) 数组形成的树上某两个点的 LCA,无需离线。\(n,Q\le 4\times 10^5\),保证 \(fa_i<i\),2.5s,64MB。
形式奇怪 \(\rightarrow\) 考虑分块
询问 LCA \(\rightarrow\) 不断跳 \(fa\)
不断进行重复操作 \(\rightarrow\) 记录每个点跳出块后的第一个位置
散块直接重构,整块 \(\sqrt n\) 次后全部出块,直接打 tag,询问 trivial,时间复杂度 \(O(n\sqrt n)\)
P7447 [Ynoi2007] rgxsxrs
序列,区间大于 \(x\) 的数减 \(x\),区间和与最小最大值,无需离线。\(n,Q\le 5\times 10^5,a_i\le 10^9\),6s,64MB。
和值域有关 \(\rightarrow\) 值域倍增分块(?)
- 块大于 \(x\),打标记或降块,降块至多 \(\log V\) 次,产生 \(\log n\) 的复杂度后必然降块
- 块等于 \(x\),暴力找到所有需要减小的 \(a_i\),单个 \(a_i\) 同块内至多减小 \(b\) 次(\(b\) 为倍增底数)
时间复杂度 \(O(nb\log_bV\log n)\)。空间底层分块后线性。
P7722 [Ynoi2007] tmpq
三个序列 \(a,b,c\),单点改 \(a\),询问有几个 \(i<j<k\le r\) 满足 \(b_{a_i}=a_j=c_{a_k}\),离线。\(n\le 2\times 10^5,Q\le 5\times 10^4\),4s,64MB。
阴间条件 \(\rightarrow\) 单点改 \(a,b,c\),询问 \(b_i=a_j=c_k\)
颜色相关 \(\rightarrow\) 次数大小分治,小者暴力,大者维护
小颜色暴力重新 dp,\(O(Q\sqrt n)\) 次区间加,\(O(Q)\) 次单点查
大颜色维护动态 dp,分块维护块内前缀 dp 结果及前缀块 dp 结果,单点改 \(O(\sqrt n)\),查询 前缀块+块内前缀=\(O(1)\)
总时间复杂度 \(O(Q\sqrt n)\),空间离线做到线性
P7880 [Ynoi2006] rldcot
树,边带权(可以为负),静态,\(Q\) 次询问 \([l,r]\) 内的点对有几种不同的 \(\operatorname{lca}\) 带权深度,离线。注意不保证 \(fa_i\le i\)。\(n\le 10^5,Q\le 5\times 10^5\),500ms,512MB。
合法子区间计数 \(\rightarrow\) 考虑有用点对
树上有用点对 \(\rightarrow\) 重剖,由轻子树合并上来,有用点对 \(O(n\log n)\) 对
问题转化为给定 \(O(n\log n)\) 对带权点对,求区间内存在哪些权值。
静态区间问题 \(\rightarrow\) 扫右维护左,转为在线问题
给前缀放上一个颜色,求单点颜色数,树状数组即可。时间复杂度 \(O(n\log^2 n+Q\log n)\)。
P7881 [Ynoi2006] rmpq
二维平面,抽象信息类,半平面乘,单点查,强制在线。\(Q\le 10^5,x_i,y_i\le 10^9\),操作次数 \(2\times 10^7\),2s,512MB。
无法 KD-Tree(值域过大且无法离线)。
很想离线(?)\(\rightarrow\) 根号重构。
问题变成预处理 \(B\) 次修改后每个位置的答案。
发现易于用 \(O(k^2)\) 的时间合并两个大小为 \(k\) 的子问题,所以递归两个子问题就可以做到 \(O(B^2)\) 处理。
总时间复杂度 \(O(nB+{n^2\over B})=O(n\sqrt n)\)。
Ynoi的更多相关文章
- Ynoi专练
为了练习分块 莫队 bitset黑科技 我会写几道Ynoi 放到这里. bitset 每一位占1bit int 每一位占 4 bitye bool占1 bitye long long 8bitye L ...
- Ynoi 数据结构题选做
Ynoi 数据结构题选做 前言 我将成为数据结构之神!坚持 lxl 党的领导,紧随 nzhtl1477(女装灰太狼1477)的脚步.无论过去.现在还是未来,分块始终是实现 data structure ...
- 题解:YNOI/GZOI2019 与或和
题目大意: 1. 求所有的子矩阵的and之和2. 求所有子矩阵的or之和 由于是位运算,那么久直接拆位,于是就变成了求全0子矩阵的个数和全1子矩阵的个数那么题目就变成了简单的单调栈问题 #includ ...
- [YNOI 2016] 掉进兔子洞
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4939 [算法] 不难发现 , ansi = (r1 - l1 + 1) + (r2 ...
- [bzoj 5143][Ynoi 2018]五彩斑斓的世界
传送门 Descroption 给了你一个长为n的序列a,有m次操作 1.把区间[l,r]中大于x的数减去x 2.查询区间[l,r]中x的出现次数 Solution 分块 对于每个块,我们都分别维护: ...
- [bzoj 4939][Ynoi 2016]掉进兔子洞
传送门 Description 一个长为 n 的序列 a. 有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间剩下的数的个数和,询问独立. 注意这里删掉指的是一个一 ...
- Solution -「Ynoi 2018」「洛谷 P4117」五彩斑斓的世界
\(\mathcal{Description}\) Link. 给定序列 \(\{a_n\}\),处理 \(m\) 次操作: 给定 \(l,r,x\),把 \([l,r]\) 内所有 \(&g ...
- 洛谷P5309 Ynoi 2011 初始化 题解
题面. 我也想过根号分治,但是题目刷得少,数组不敢开,所以还是看题解做的. 这道题目要用到根号分治的思想,可以看看这道题目和我的题解. 题目要求处理一个数组a,支持如下操作. 对一个整数x,对数组长度 ...
- Android自动化学习笔记:获取APK包名的几种方法
---------------------------------------------------------------------------------------------------- ...
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
随机推荐
- 圆柱坐标系(Cylindrical Coordinate System)
参考:维基百科 圆柱坐标系(英语:cylindrical coordinate system)是一种三维坐标系统.它是二维极坐标系往 z-轴的延伸.添加的第三个坐标 \(z\) 专门用来表示 P 点离 ...
- MediaRecorder test
public class MediaRecorder extends Object java.lang.Object ↳ android.media.MediaRecorder Class Ov ...
- UVA908[Re-connecting Computer Sites]题解
原题 1.题意分析 题意就是给你很多组数,对于每组数,有三组小数据.第一组小数据先输入一个n表示顶点数,然后再输入n-1条边表示初始边数.其它组小数据先输入一个数k,表示增加的边的数量,然后再输入k条 ...
- js闭包使用之处
1.循环绑定 No Use: var lists = document.getElementsByTagName('li'); for(var i=0;i<lists.length;i& ...
- P1182 数列分段 Section II 题解
Problem 考察知识点:二分.贪心. 题目描述 对于给定的一个数组,现要将其分成 \(M\) 段,并要求每段连续,且每段和的最大值最小. 思路 二分答案出每段和最大值的最小值,然后贪心检验是否满足 ...
- trafilatura 网页解析原理分析
trafilatura 介绍 Trafilatura是一个Python包和命令行工具,用于收集网络上的文本.其主要应用场景包括网络爬虫下载和网页解析等. 今天我们不讨论爬虫和抓取,主要看他的数据解析是 ...
- QT(6)-QStandardItemModel
@ 目录 1 说明 2 函数 2.1 构造函数 2.2 追加列\行 2.3 清除.删除并返回指定行或列 2.4 查找 2.5 设置水平\垂直表头项目 2.6 获得模型索引 2.7 插入 2.8 根项目 ...
- HTML-9
(一)常用方法 toFixed(); 四舍五入到小数点后几位 var x=9.656; x.toFixed(0);//10 x.toFixed(2);//9.66 x.toFixed(4);//9.6 ...
- 第1章 .NET起步
1.1 什么是.NET? .NET 8.0 SDK下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0 .NET 是一个免费的跨平台开 ...
- musl中strlen源码实现和分析
最近在学习<C 和指针>的第 6 章指针部分,在 6.12 章节看到了 strlen 函数的实现,联想到最近有在看 musl 的源码,于是就把 musl 中 strlen 的源码认真地分析 ...