
树
文章平均质量分 75
Power_True
这个作者很懒,什么都没留下…
展开
-
3400. 【GDOI2014模拟】旅行
#include<queue>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=1e4+5;struct node{ int to,next,w;}e[2*N];int cnt,n,k,m,INF;int head[N],g[1<<10],f[N][1<&l原创 2021-07-07 16:53:21 · 145 阅读 · 5 评论 -
【学习笔记】数据结构:无旋Treap
最近学习了一下无旋Treap,发现无旋Treap真的太好打了,而且也很好理解,很好用。Treap?什么是Treap?顾名思义:Treap=Tree+heap,即“树堆”,“树”指的是二叉查找树,“堆”就是堆。那二叉查找树跟堆有什么关系呢?当输入的数据十分恶心的时候,普通的二叉查找树的时间复杂度就会由 nlog2nnlog_2nnlog2n 退化到 n2n^2n2 级别,时间复杂度难以让人接受。而我们现在考虑优化,我们可以在每一个节点上多放一个数,然后使得这棵树既满足二叉排序树的性质也满足堆的性原创 2021-01-02 15:07:00 · 1113 阅读 · 0 评论 -
【题解&比赛总结】简单题(easy)
Description小 P 完成了签到之后就开始了比赛,他看了眼第一题,第一题的题意是这样的:KCZ 王国有 NNN 个城市,被 MMM 条双向道路连接。每条双向道路都有一个维修费用。国王 KCZ 想要去掉尽可能多的边,使得留下来的边依旧能使王国的任意两个城市之间都有经过一条或多条边的路径。在所有的方案中,国王 KCZ 希望留下来的边的维修费用之和最小。现在,国王 KCZ 准备调整一些边的维修费用来影响最后留下的边的结果。对于每条边,他希望你告诉他,在保证这条边有希望被留下来的同时,这条边的维修费用最原创 2020-11-28 22:07:25 · 581 阅读 · 0 评论 -
【学习笔记】数据结构:树状数组(二)区间修改
目录前言区间修改单点查询查询修改CodeCodeCode区间修改区间查询查询修改CodeCodeCode总结前言上一次我讲了树状数组的单点修改,这次我打算讲一讲树状数组的区间修改。区间修改单点查询似乎毫无头绪。我们知道,树状数组的思想是前缀和,那我们是不是可以用一下前缀和的逆运算:差分呢?首先我们设 bi=ai−ai−1b_i=a_i-a_{i-1}bi=ai−ai−1 ,那我们看一下:查询我们首先考虑查询。我们要求 aia_iai 那么我们就只用求 ∑j=1ibj\sum_{j原创 2020-09-06 08:13:10 · 637 阅读 · 1 评论 -
【学习笔记】数据结构:树状数组(一)单点修改
目录前言什么是树状数组?一二总结前言平常打线段树是不是打得烦了?代码量长 ,难修改?那就学学树状数组吧!单点修改:树状数组 303030 行,线段树 505050 行区间修改:树状数组 404040 行,线段树 100100100 行看到没有,这就是差距!什么是树状数组?树状数组又名二进制查找树,为什么呢?让我们来看一看吧。(以下图片来自网络)乍一看好像没什么头绪,刚才说了,树状数组又名二进制查找树,把它的编号转成二进制看看?显然:一二设当前编号末尾有 xxx 个0那么总原创 2020-08-27 10:32:57 · 470 阅读 · 0 评论 -
树:倍增求LCA(最近公共祖先)
嘿,LCA的题目可是我最喜欢的题目了,今天我就来讲讲如何求LCA?对于如何LCA,我只会几种,不过比较实用。我重点去讲倍增求LCA。倍增求LCA倍增?什么是倍增?字面上的意思便是成倍增长,其实也就是ST表(不懂的上网搜一搜 )言归正传,那我们该怎么用倍增求LCA呢?首先,我们设 fi,jf_{i,j}fi,j 表示从 iii 这个点向上跳 2j2^j2j 步所到达的点。然后我们可以一遍dfs,处理出所有的 fi,0f_{i,0}fi,0 即每个点的父亲。接着我们考虑如何转移:首先我们先原创 2020-08-09 11:25:32 · 256 阅读 · 0 评论