摘要: 分块,对于每一块用线段树的结构维护每个节点在每个值域区间下的最大子段和。由于管辖区间长度为 $len$ 的区间只有 $len^2$ 种值域区间,所以只要能够在 $\Theta(len^2)$ 的复杂度内合并左右子树到当前节点就可以了。归并排序可以找到左/右儿子最大/小的比这个数大/小的数,直接合并即 阅读全文
posted @ 2023-02-11 19:31 zqs2020 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 有一个长度为 $n$ 的序列 $a$,定义一个二元运算 $x\circ y$,它满足结合律。$q$ 次询问,每次求 $a_l\circ a_{l+1}...\circ a_r$。 线段树是解决这种问题的数据结构之一。猫树可以在 $\Theta(n\log n)-\Theta(1)$ 内解决。sqrt 阅读全文
posted @ 2022-12-05 17:49 zqs2020 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 有这样一类问题:给你若干个元素 $(a,b,c)$,选出一些,要求它们的 $a$ 满足一些条件,使得 $\sum b\times \sum c$ 最小(大)。 通用解法:把每种选择方案看成坐标系上的一个点 $(\sum b,\sum c)$。则就是拿一个反比例函数去切,最小的能切到点的反比例函数就是 阅读全文
posted @ 2022-11-19 21:04 zqs2020 阅读(80) 评论(1) 推荐(2) 编辑
摘要: 对于非树边 $u,v,[l,r]$,$u,v$ 路径上所有树边边权必然 $<r$。先修改路径上这些边边权的上界。 可以想到这样一种贪心策略,先考虑树边,如果发现一条路径 $u,v$ 上的树边全部设定好边权了,那么把非树边 $u,v$ 纳入考虑范围。 具体的,把所有树边按边权下界排序,按照 $i=1~ 阅读全文
posted @ 2022-10-22 20:49 zqs2020 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 在计算以 $u$ 为根的子树的答案时,只需要知道会经过 $u$ 的方案的和,再加上儿子的答案。 对于子树内的点 $v$,假设它是 $u$ 在 $son$ 方向的儿子,要让它成为最小值,由于算的是经过 $u$ 的方案,那么 $v\rightarrow u$ 上的所有点都会成为这种方案经过的点。因此 $ 阅读全文
posted @ 2022-10-02 19:44 zqs2020 阅读(44) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2022-09-09 18:52 zqs2020 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 一眼 dp,发现列不出状态。排列计数问题遇到这种情况,考虑笛卡尔树。 发现一次删除对应到笛卡尔树上就是删掉所有儿子数不为 $2$ 的节点。特别地,对于当前树中下标最小/最大的点,它们没有儿子时才会被删除。 ~~然后这不随便乱 dp?~~其实这个 dp 属实有点恶心,~~我比赛的时候搞了1h dp还是 阅读全文
posted @ 2022-09-01 16:31 zqs2020 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 这是道有趣的观察性质题,可惜我没有脑子。 看到这个 dp 形式就非常整体二分,所以它就是整体二分(雾 我们先令 $c(i,j)$ 表示 $i\le x<y\le j,\gcd(x,y)\ge i$ 的数量,输出时 $+n$ 即可。$c(i,j)$ 的值在一些基本的转化后变为 $\sum\limits 阅读全文
posted @ 2022-08-30 20:37 zqs2020 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 分块。 $f[i][j]$:$i$ 一直到第 $i$ 所在块 $x$ 尾端,对 $x+1\sim j$ 块造成贡献/$i$ 一直到 $i$ 所在块 $x$ 开头,对 $j\sim x-1$ 块造成贡献。 $mn[i][j]$:块 $i\sim j$ 的答案。 预处理:块内元素排序,双指针求 $f$ 阅读全文
posted @ 2022-08-29 19:12 zqs2020 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 题面 二叉查找树(BST)是一种简单的数据结构,本题默认你已经熟悉BST的插入和查询两种操作。 给你一棵树,每个节点有一个BST。有以下两种操作: $u,v,k$ :在路径 $(u,v)$ 上每个节点的BST中插入 $k$。 $u,k$ :询问节点 $u$ 的BST中查询 $k$ 时经过节点的权值和 阅读全文
posted @ 2022-08-28 19:10 zqs2020 阅读(32) 评论(0) 推荐(0) 编辑