![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 60
Fuko_Ibuki
Eclipse first, the rest nowhere. 已从ACM领域退出,这个账号不会再发题解了。
展开
-
线段树(重制)
线段树是什么怎么构建模板例题该来的还是要来的.理解了树状数组之后想要解决区间更新及询问的问题,就要用到线段树.当然非常骚的树状数组可以过,不过那就是大佬做的事了.线段树其实不是一个很难的东西,因为递归二分的原因,除了push_down操作比较费事,其它都很好背下来.只要理解一点点就好. update:由于以前写的线段树实在太丑了,不符合我现在的码风,故此把以前的代码全部删掉...原创 2017-11-05 16:18:39 · 12233 阅读 · 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 · 29429 阅读 · 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 · 32131 阅读 · 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 · 12798 阅读 · 3 评论