![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
------数据结构-------
五彩蒟蒻DDD
大大大大大蒟蒻
展开
-
bzoj3694&bzoj1576 dijkstra+树链剖分
bzoj1576其实就是bzoj3694的进阶版啦。 具体思路如下: 一条未加入最短路树的边两端点分别为u,v。u,v的lca为t。 设u–lca–v这条链上的点为x。 DIS[x]包括边(u,v)的最短长度为: DIS[x]=dis[u]+l(u,v)+dis[v]-dis[x] (画图易得) 需要注意的是x不包括lca,若包括则DIS[lca]与根节点不连通。 所以枚举未加入最原创 2017-09-29 17:56:57 · 342 阅读 · 0 评论 -
bzoj2434 阿狸的打字机 fail树+树状数组
啊为了这道题花了接近半天的时间……主要还是因为自己效率太低……以及太弱……思路:m个询问,每个询问x y 问x在y中出现多少次 y–包含串 x–被包含串 求第x个打印的字符串在第y个打印的字符串中出现了多少次。 先建造ac自动机及fail指针,再以fail的反指针建造fail树。 x在y中出现多少次 =查x字符串的末尾指向y的fail反指针有多少=是此时在x的子树中有多少y串中的点=统计原创 2017-07-29 21:55:15 · 365 阅读 · 1 评论 -
9.26NOIP模拟 树链剖分
这道题调了那么久居然是最后的judge错了…… 没有考虑m=0和m=1的情况 以#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=100000+5;int n,m;int a[N];int to[2*N],nxt[2*N],head[N],etot;int dep原创 2017-09-29 18:07:15 · 272 阅读 · 0 评论 -
bzoj2243 树链剖分
Description神犇家门口种了一棵苹果树。苹果树作为一棵树,当然是呈树状结构,每根树枝连接两个苹果,每个苹果都可以沿着一条由树枝构成的路径连到树根,而且这样的路径只存在一条。由于这棵苹果树是神犇种的,所以苹果都发生了变异,变成了各种各样的颜色。我们用一个到n之间的正整数来表示一种颜色。树上一共有n个苹果。每个苹果都被编了号码,号码为一个1到n之间的正整数。我们用0代表树根。只会有一个苹果直接根原创 2017-09-28 17:49:57 · 346 阅读 · 0 评论 -
NOIP模拟dp专题 Question 单调栈
说实话这是我第一次用单调栈,也算是第一次了解单调栈。还真的是如果没做这道题我直到NOIP也不会了解这种数据结构。题意简而言之就是求01矩形内的最大矩形面积。解法先用dp求出h[i][j] 意为从(i,j)点向上有多少个连续的1(也可看作矩形的高) 接着用两个单调栈维护每一行,一个是从左往右扫递增,一个是从右往左扫递增(也就是从左往右扫递减)。 以ris[ ](左往右扫递增的栈)举例,点(i,j)原创 2017-10-09 19:06:13 · 318 阅读 · 0 评论 -
10.5NOIP模拟考 dfs序+贪心
解法:40%:序列上的区间覆盖问题(没有想到……) 100%: 求出每个询问中uv的lca,再按照lca的深度从深到浅排序。越深的lca越优先选择。已选择了的lca在线段树上标记其子树。在第i个询问时检查uv所在的子树有无被标记,若被标记则跳过,没被标记则选择此次uv的lca,并标记其子树,ans++感性理解感性理解一下这个贪心的正确性: 首先一条链上选lca是最优的,因为如果这条链被经过了,原创 2017-10-05 17:33:12 · 260 阅读 · 0 评论 -
bzoj3289 树状数组+莫队
树状数组 莫队原创 2017-07-21 21:40:25 · 505 阅读 · 0 评论 -
9.27 数据结构noip模拟——不正常团伙
法一: 线段树—— 用一棵线段树+主席树 线段树就是拿来统计sum的 (sigma a) 主席树就是拿来统计个数为2的数的和del 主席树的具体操作: a[i] i前有一个数=a[i] 则在第i棵树的第i个位置 +a[i] a[i] i前有两个数=a[i] : a[i]- 4 4 4 del- -4 +4 0 这样查询前三个时sigmadel=0 查询后两个时sigma=原创 2017-09-28 17:55:45 · 304 阅读 · 0 评论