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月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
随机推荐
- linux常见命令(五)
用于文本内容处理的相关命令 sort uniq cut comm diff sort:对文件中数据进行排序,并将结果显示在标准输出上 命令语法:sort [选项] [文件] 选项 选项含义 -m 如果 ...
- Android news Display Owner Info on Your Android Device in Case It Gets Lost
Display Owner Info on Your Android Device in Case It Gets Lost The latest versions of Android includ ...
- Capture Data.dmg
苹果apple mac 系统检测 日常分析 软件 https://gigafiles.apple.com/#/download 现有文件可供下载. 备注 Capture Data 9.9.0 Th ...
- linux特殊权限rws和rwt
Linux文件,除了rwx这些权限外,还有一些特殊的权限,如rws.rwt. 1.s权限(setuid) 1.1 设置方法:chmod u+s 该位可以让普通用户以root用户的角色运行只有root帐 ...
- openssl加解密实战
一.概念 1.加密有两种类型 密钥加密(secret-key encryption)使用相同的密钥进行加密和解密,也叫对称加密 公钥加密(public-key encryption)使用不同的密钥进行 ...
- Stable-diffusion WebUI API调用方法
写这篇文章的主要原因是工作中需要写一个用训练好的模型批量生图的脚本,开始是想用python直接加载模型,但后来发现webui的界面中有不少好用的插件和参数,所以最终改成调用WebUI接口的方式来批量生 ...
- 解决使用mitmprox抓包可以访问网页,但是使用python request 调用该网站接口报错问题
可能有几种原因导致这种情况.以下是一些常见的问题和可能的解决方法: 证书验证问题: 当你使用mitmproxy抓包时,它通常会生成自签名的SSL证书,以便进行中间人攻击检查.但在Python中使用re ...
- 管道channel
管道 go语言中管道底层是一个环形队列(先进先出),写入(send)和 取出(recv)都是从同一个位置按照同一方向顺序执行. sendx表示最后一次插入元素位置,recvx表示最后一次取出元素的位置 ...
- Dapper.Lite 扩展
最近重构并精简了Dapper.Lite,然后把不依赖Dapper的版本LiteSql也重构了一下,和Dapper.Lite保持一致.感觉这两款ORM基本完工,自荐一下. .NET的ORM虽多,堪用的不 ...
- 全网最详细4W字Flink全面解析与实践(下)
本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 承接上篇未完待续的话题,我们一起继续Flink的深入探讨 Flink S ...