
线段树
文章平均质量分 60
Fuko_Ibuki
Eclipse first, the rest nowhere. 已从ACM领域退出,这个账号不会再发题解了。
展开
-
线段树(重制)
线段树是什么 怎么构建 模板 例题 该来的还是要来的.理解了树状数组之后想要解决区间更新及询问的问题,就要用到线段树.当然非常骚的树状数组可以过,不过那就是大佬做的事了.线段树其实不是一个很难的东西,因为递归二分的原因,除了push_down操作比较费事,其它都很好背下来.只要理解一点点就好. update:由于以前写的线段树实在太丑了,不符合我现在的码风,故此把以前的代码全部删掉...原创 2017-11-05 16:18:39 · 12255 阅读 · 0 评论 -
LibreOJ 6277,6278,6280 数列分块入门1,2,4 树状数组,分块,线段树等.
分块1 分块2 分块4 模板一共有九个.我试着在三天内做了3个. 应该不用超链接吧. 分块1 区间加,单点询问. 这不是裸的改版树状数组吗?用树状数组处理前缀和水过. #include<bits/stdc++.h> namespace chtholly{ typedef long long ll; #define re0 register int #define...原创 2018-04-06 08:42:30 · 29458 阅读 · 0 评论 -
LibreOJ 6279,6281,6283 数列分块入门3,5,7 树状数组,分块,线段树等.
分块3 分块5 分块7 我又做了3个. 分块3 区间加,区间求某个数x的前驱(小于x的数中最大的一个).没有输出-1. 我还以为所有的数真的会小于0.吓死我了. /* 一样的方法. 对于l,r所在的块,暴力修改重构. 对于中间的块,lazy数组标记一下. 询问的时候暴力枚举两边,中间二分求前驱,取出这些数中最大的一个. 代码与分块2相差不大. */ #include&...原创 2018-04-07 11:50:50 · 32186 阅读 · 0 评论 -
Codeforces上几个非常妙的数据结构题
第一次做线段树优化dp.没想到div.2的D这么难,以后真的要退竞了. 题意 将一串数字分为k个连续区间,使得每一段中出现数字种数的总和最大. 做法 我们先来思考一下裸的dp. 定义dp[i][j]为前i−1i−1i-1个数分割为jjj份的最大值. 因此有代码 dp[i][j]=max(dp[k=1 to i][j-1])+sum(k,n); /*此处的sum(k,n)是k ...原创 2018-05-08 08:29:49 · 12912 阅读 · 3 评论