摘要: 考虑设计一个哈希函数 \(hash(x) = f(x) \times base^x\)。 其中 \(f(x)\) 表示 \(\sum_{j=1}^{i-1} [j <i]\)。 然后类似于滑动窗口计算区间哈希值,加入一个数就计算贡献,减去一个数就计算这个数产生了贡献,两个东西都可以树状数组维护,那么 阅读全文
posted @ 2024-01-30 23:58 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 相信很多人在学习莫队,刷莫队题目时,会不可避免的遇到一个数据结构 —— 值域分块。这篇文章就是帮助各位快速入门的。 Q1 给定一个序列,实现单点修改以及区间查询,保证修改次数不超过 \(10^7\) 次,查询次数不超过 \(10^5\) 次,序列长度不超过 \(10^5\) 。 A1 首先要求的是 阅读全文
posted @ 2024-01-30 23:58 ChiFAN鸭 阅读(223) 评论(0) 推荐(1) 编辑
摘要: 因为是图上路径是否经过某个点的问题,所以考虑建出圆方树,然后根据圆方树的性质,\(a\) 到 \(c\) 存在经过 \(b\) 的路径等价于 \(a,c\) 在圆方树上的路径经过 \(b\) 或者 \(b\) 所连接的方点,考虑暴力在圆方树上跳 LCA 即可,时间复杂度 \(O(n + m)\)。 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 考虑二分答案。 假设当前二分的答案为 \(k\),那么对于每个点,距离大于等于 \(k\) 的点构成了平面上 \(4\) 个子平面。 那么只需查询子平面中是否存在点即可,类似于窗口的星星,把问题转换成求矩形交集,用一个扫描线维护,复杂度 \(O(n \log V)\),加上二分,总复杂度 \(O(n 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 不知道为什么最近突然变得很摆,又要上文化课,只有一些空余时间可以搞 OI,所以就制定一个写题计划吧。 可能会添加,但是 不会 删除,请各位监督。 Yuno loves sqrt technology I(代码复杂度正确,常数较大还未卡过) 时代的眼泪(已 AC) Happy Sugar Life P 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 前言 斜率优化是一种经典的单调队列优化类型,虽然它的名字很高大上,但是其思想内核非常简单,这篇博客就是用来帮助各位快速入门的 提示:本博客以单调队列的思想理解斜率优化 引入 dp 优化可以怎么分类? 数据结构维护决策点集的插入与查找 算法维护决策点集大小,取出无用决策点 而斜率优化 dp 属于第二者 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 前言 模拟赛离正解就差一个这个,气 正文 线段树上的边分两类:向上连的边,可以优化连出的边,向下连的边,可以优化连入的边。这是线段树优化的基础 构造出线段树,线段树上每一个点代表一个 虚拟 节点,同时父亲连向它的两个儿子 假若点 \(x\) 向区间 \([l,r]\) 内所有点连边,我们这么做: 假 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: CF19E 问题显然可以转换成找到所有奇环交。 然后建出 dfs 树。 然后考虑利用返祖边得到所有环。 但是注意这里不可以删去偶环上的边。 然后再边上边差分打 \(tag\)。 或者考虑线段树分治套可撤销并查集秒杀。 AT_keyence2019_e 考虑分治,分治完连边构造 MST。 CF76A 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 来一发 \(O(\log n)\) 线性空间的解法。 考虑通过只维护线段树叶子节点的虚树的方法压缩空间,考虑记录下每个节点的编号,然后通过异或完求最低位的 \(1\) 的方式求出 LCA 的深度,然后记录下 LCA 右端点的编号。在回收节点的时候可以释放储存右端点编号的空间,但是这里为了方便就不这样 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 看到现有的一篇 DSU on tree 的题解复杂度假了,于是我来再写一篇。 首先重新梳理思路,维护每棵子树内深度为某个值的节点是否存在。 维护这个东西可以直接 DSU on tree 也就是把小的子树内的信息加入大的子树。 然后加入点是判断是否能和已经存在的点构成长度为 \(K\) 的路径。 举个 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 设计 \(f_i\) 表示以第 \(i\) 个数结尾的选择的最大值。 有 \(f_i = f_j + a_i\)(\(type_i \not = type_j\))。 发现可以选择的种类其实构成两段连续区间。 所以维护使得 \(type_x = i\) 的所有 \(x\) 的 \(f_x\) 最大值 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 先不管值域,设计状态 \(dp_{i,j}\) 表示考虑前 \(i\) 个数最后一个数为 \(j\) 的方案数,那么有如下转移: \[dp_{i,j} = dp_{i-1,k} (j \not = k,j \leq a_i) \]先滚动数组去掉一维状态,然后发现每一次操作对于数组 \(dp\) 而言 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 来一发 \(O(n \sqrt n)\) 时间,\(O(n)\) 空间的分块写法。 首先建模,把 数值 \(x\) 在两个数组中出现的位置作为坐标,问题就转化为一个二维动态数点。 考虑用序列分块维护第一维,第二维用 值域分块 维护,这样子平衡复杂度玩就得到一个 \(O(n \sqrt n)\) 时间 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 这个东西貌似就是把奇奇怪怪的多模匹配问题变成树论或者图论问题,然后跑 tarjan 或者奇奇怪怪的 DS。 当然,有时候你需要拆贡献或者用一些 string 独有的性质。 就先写到这里吧,我要睡觉了。 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 前言 我们都知道动态开点权值线段树的空间复杂度是 \(O(n \log V)\) 的,但是很多题目中这样的空间是会被卡的,那我们能不能优化呢? 实现 看看下面这一棵树: 在上图中,红色节点使我们平常会开的点。 但是我们发现,其实只要维护绿色的点和红色的叶子结点。 其实,绿色节点就是所有叶子结点的 虚 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 写点基础的东西。随便写的,勿喷。 top cluster 一个 cluster 是一个联通子图,且至多有两个点与其他部分连接 这两个点被称为 boundary node 其余点被称为 internal node,两个 boundary node 间的路径被称为 cluster path 而我们的树分 阅读全文
posted @ 2024-01-30 23:57 ChiFAN鸭 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 暴力容斥复活之路! \(k=1\) 这个你肯定会。 \(k=2\) 大的放上去,小的放下来。简单贪心。 \(k=3\) 考虑二分答案。 然后考虑判断是否合法。 令当前答案为 \(val\)。 首先钦定最小值在第一行。 然后枚举最大值在哪一行。 现在我们就确定了两行可以填的数的范围。 剩下一行的选择就 阅读全文
posted @ 2024-01-30 23:56 ChiFAN鸭 阅读(12) 评论(0) 推荐(0) 编辑
摘要: A 怎么是重构树板子,放在图上都是水题。 B 考场上只打了一个暴力,赛后发现似乎是很可做的 C 是一个考察状态设计的 dp 以后要多刷 D 是一道数据结构优化 dp 考场上写出来了却因为空间问题挂了 \(15\) 分,菜了 而且被 D 拖了时间,没时间开 B,C 。。。 阅读全文
posted @ 2024-01-30 23:55 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ChiFAN 的进程表 tip 有些题写了题解,思路做法都在里面,就只丢一个传送门了。 2023.1.9 生日蛋糕 传送门 IDA* 经过一番推式子可得,若还剩下 \(K\) 的体积,表面积为 \(2 \times K / R\) 。 所以 \(R\) 要尽可能大。 那么估价函数 \(g(u) = 阅读全文
posted @ 2024-01-30 23:52 ChiFAN鸭 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 模拟考最后一题是这道题,要是数组开大就场切了,最后不小心挂了 \(15\) 分。 以下是考场思路: 考虑这样一个问题,所有时间对 \(r+g\) 取余是可以的。毕竟红绿灯是一个循环。 再考虑这样一个东西,等过一次红灯后的所有情况是相似的,从循环的角度出发都是时刻 \(0\)。 因此考虑处理出出发之后 阅读全文
posted @ 2024-01-30 23:52 ChiFAN鸭 阅读(18) 评论(0) 推荐(0) 编辑