随笔分类 -  Data Structure --- 树状数组

摘要:"题面" 题解 考虑整体二分。 定义整体二分函数 表示操作权值在$[l, r]$中,对$[ql, qr]$的询问进行二分。 这样的话check就会很简单,先按照时间将所有$\geq mid$的边加进去,对于每个点判断是不是所有路径都经过了这个点就可以判断这个点的答案是不是$\geq mid$ 具体如 阅读全文
posted @ 2019-02-27 08:32 xgzc 阅读(229) 评论(0) 推荐(0)
摘要:"题面" 题解 对于两个位置$l, r$,如果它们分别是区间$[l, r]$的最大值,那么可以产生$p1$的贡献, 否则如果它们中有一个是最大值,那么可以产生$p2$的贡献。 所以对于当前位置$i$,假设左右两边第一个比它大的是$l, r$,那么$[l, r]$可以产生p1的贡献,$[l + 1 \ 阅读全文
posted @ 2019-02-26 09:25 xgzc 阅读(164) 评论(0) 推荐(0)
摘要:题面 题解 有难度的计数$dp$ 我们先求出所有不降子序列的个数 这个可以用树状数组维护 删除的总方案数为$(n-i)!$种 但是可能我们删到非降之后,我们可能还会删 那么设通过删除操作让子序列变成长度为$i$的方案数为$g[i]$,其中合法的有$f[i]$种 容斥:$f[i] = g[i] - g 阅读全文
posted @ 2019-01-11 08:50 xgzc 阅读(142) 评论(0) 推荐(0)
摘要:题面 题解 很像最长不下降子序列对吧(废话) 设$up[i]$和$down[i]$分别表示$i$最大最小能取多少 注意到: $$ f[i] = max_j\left\{f[j]\right\} + 1 \\ a[j] \leq down[i],\; up[j] \leq a[i],\; j \leq 阅读全文
posted @ 2019-01-09 21:54 xgzc 阅读(199) 评论(0) 推荐(0)
摘要:题面 题解 众所周知,最长公共子序列的$dp$是$\text{O}(n^2)$, 但是每一个数字只重复$5$遍,那么我们暴力匹配$25n$个点对 那么我们就可以将其变成求最长上升子序列 用二分栈或者树状数组求解即可。 代码 阅读全文
posted @ 2019-01-09 21:19 xgzc 阅读(250) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-12-29 15:33 xgzc 阅读(8) 评论(0) 推荐(0)
摘要:题面 题解 点分治大火题。。。 设白边数量为$a$,黑边为$b$,则$2min(a,b)\geq max(a,b)$ 即$2a\geq b\;\&\&2b\geq a$ 考虑点分治时如何统计答案: $2(a_1 +a_2) \geq b_1 + b_2$ $\therefore 2a_1-b_1\g 阅读全文
posted @ 2018-12-24 11:16 xgzc 阅读(246) 评论(1) 推荐(0)
摘要:"题面" 题解 带修改的主席树???~~我可没有那么勤快去写个树套树~~ 只要它不强制在线,我就可以用整体二分做 思路大致与 "【ZJOI2013】K大数查询" 相似 只不过放在树上做,~~还带修改~~ 同样处理出询问,并且一个修改操作要拆分成两个 代码 cpp include include in 阅读全文
posted @ 2018-10-16 21:57 xgzc 阅读(213) 评论(0) 推荐(0)