随笔分类 -  线段树

摘要:Bipartite Checking 感觉这种题写过很多次啦。 删边很难操作, 我们把边的影响区间丢到线段树上, 就全部变成加边了。 我们用按秩合并并查集维护每个点到根的奇偶性, 合并的时候能在小的子树的根打个标记。 阅读全文
posted @ 2019-05-22 14:59 NotNight 阅读(127) 评论(0) 推荐(0)
摘要:Camping Groups 我们先计算出, 每个点当leader所能掌控的最多人数。 然后我们把询问离线, 丢到responsibility最大的那个地方去。 然后从大到小往线段树里加人, 加入完之后处理掉当前的询问。 如果强制在线的话就只能树套树啦。 阅读全文
posted @ 2019-05-21 14:02 NotNight 阅读(101) 评论(0) 推荐(0)
摘要:Dividing Kingdom 9!枚举, 码就完事了。 阅读全文
posted @ 2019-05-21 01:12 NotNight 阅读(101) 评论(0) 推荐(0)
摘要:Greedy Subsequences 我们先找到每个点的右边第一个比它大的, 然后从大的往它建边, 然后可以发现这是一棵树。 我们令d[ i ] 为 i 号点往上走最多能走几步, 我们能用线段树维护d 的值。 我们加入点 i 的时候, 我们把它的值设为 d[ fa ] + 1, 我们删除 i 的时 阅读全文
posted @ 2019-05-20 20:10 NotNight 阅读(99) 评论(0) 推荐(0)
摘要:Power Tree 没想到一个点到 1 的贡献和到 u 的贡献存在比例关系, 只要乘以 deg[ u ] * m[ u ], m[ u ] 表示 u 到 1, 所成的系数。 然后我们用dfs序建出线段树后, 维护每个点乘的系数, 区间值的和就可以了。 阅读全文
posted @ 2019-05-20 17:03 NotNight 阅读(180) 评论(0) 推荐(0)
摘要:Two Permutations 关键是没想到按大小顺序把第二个排列一个一个加入线段树, 然后线段树维护整体的hash值, 得到的hs值减去一个sub 之后与, 第一个排列的hash值比较。 阅读全文
posted @ 2019-05-20 14:13 NotNight 阅读(159) 评论(0) 推荐(0)
摘要:TorCoder 开26个线段树维护数量, 然后就没了。。 阅读全文
posted @ 2019-05-18 11:59 NotNight 阅读(142) 评论(0) 推荐(0)
摘要:把式子二项式展开之后, 会发现是需要维护a[ i ], i * a[ i ] .... i ^ 5 * a[ i ], 的区间和, 然后用线段树维护。 阅读全文
posted @ 2019-05-18 11:14 NotNight 阅读(217) 评论(0) 推荐(0)
摘要:Optimize! 这个题目代码看了我半天。。 我们把终点关注在b数组, 我们先将b[ i ] 变成 h - b[ i ]并排好序, 对于一个a[ j ]来说如果它能和b[ i ]匹配, 那么它能和b[ k ], k < i, 匹配。 什么情况下能匹配成功呢, 就是b数组中 前 i 个数至少能和 l 阅读全文
posted @ 2019-05-16 18:56 NotNight 阅读(196) 评论(0) 推荐(0)
摘要:Jamie and Tree 我们按 1 号点为根建dfs序线段树。即使换了根, 我们也能通过分类讨论去更新求答案。 阅读全文
posted @ 2019-05-16 11:33 NotNight 阅读(114) 评论(0) 推荐(0)
摘要:Till I Collapse 对于每个 k, 考虑贪心地取, 最多分成 n / k段, 每段都贪心取的话, 总次数为nlogn 用线段树维护这个过程, 在线段树上二分就可以了。 阅读全文
posted @ 2019-05-14 12:50 NotNight 阅读(146) 评论(0) 推荐(0)
摘要:Nearest Leaf 没想到在dfs的过程中用线段树维护所有点到当前点的距离。 阅读全文
posted @ 2019-05-14 01:16 NotNight 阅读(94) 评论(0) 推荐(0)
摘要:Fire in the City 二分答案, 用扫描先加线段树去check 阅读全文
posted @ 2019-05-13 16:56 NotNight 阅读(173) 评论(0) 推荐(0)
摘要:Tree Generator™ 两点间的距离为 depth[ u ] + depth[ v ] - 2 * depth[ lca ] 给的字符串可以看成dfs序, 对于x, y 下标, x < y, 他们的lca的肯定在x - y 之间并且dpeth最小。 问题转换成a[ x ] - 2 * a[ 阅读全文
posted @ 2019-05-05 19:16 NotNight 阅读(335) 评论(0) 推荐(0)
摘要:New Year and Old Subsequence 第一感觉是离线之后分治求dp, 但是感觉如果要把左边的dp值和右边的dp值合起来, 感觉很麻烦而且时间复杂度不怎么对。。 然后就gun取看题解了, 用线段树维护dp的值, 然后区间合并求答案。 每个节点保存dp[ i ][ j ]表示, 把当 阅读全文
posted @ 2019-04-21 19:28 NotNight 阅读(145) 评论(0) 推荐(0)
摘要:Chemistry Experiment 维护一个权值线段树,然后二分答案。 阅读全文
posted @ 2019-04-17 18:53 NotNight 阅读(228) 评论(0) 推荐(0)
摘要:E - Forensic Examination 我也不知道为什么这个复杂度能过, 而且跑得还挺快, 数据比较水? 在sa上二分出上下界, 然后莫队 + 线段树维护区间众数。 阅读全文
posted @ 2019-04-08 14:04 NotNight 阅读(208) 评论(0) 推荐(0)
摘要:最关键的一点就是 f[ 0 ] * a[ 0 ] + f[ 1 ] * a[ 1 ] + ... + f[ n - 1] * a[ n - 1] f[ 1 ] * a[ 0 ] + f[ 2 ] * a[ 1 ] + ... + f[ n ] * a[ n - 1] f[ 2 ] * a[ 0 ] 阅读全文
posted @ 2019-04-06 14:07 NotNight 阅读(194) 评论(0) 推荐(0)
摘要:Periodic RMQ Problem 动态开点线段树直接搞, 我把它分成两部分, 一部分是原来树上的, 一部分是后来染上去的,两个部分取最小值。 感觉有点难写。。 简化 指针 阅读全文
posted @ 2019-04-05 02:08 NotNight 阅读(154) 评论(0) 推荐(0)
摘要:Yaroslav and Points 明明区间合并一下就好的东西, 为什么我会写得这么麻烦的方法啊啊啊。 阅读全文
posted @ 2019-04-04 01:38 NotNight 阅读(184) 评论(0) 推荐(0)