---------- 数据结构 ----------
ixRic
ixRic
展开
-
Dynamic Tree Connectivity(LCT)
文章目录题目分析题目题目Dynamic Tree Connectivity分析动态树(LCT)初探题目#include<cstdio>#include<vector>#include<algorithm>using namespace std;int read(){ int x=0;bool f=0;char c=getchar()...原创 2019-10-11 21:17:40 · 259 阅读 · 0 评论 -
Query on a tree(LCT版)
文章目录题目分析代码题目Query on a tree分析动态树(LCT)初探代码#include<cstdio>#include<vector>#include<algorithm>using namespace std;int read(){ int x=0;bool f=0;char c=getchar(); whil...原创 2019-10-11 21:15:34 · 263 阅读 · 0 评论 -
动态树(LCT)初探
文章目录前置技能那么直接开始吧前置技能Splay基本操作不是前置技能嘿嘿嘿;(由于某些原因,Splay的文章可能会永远咕掉,也可能明天就出现,,,逃 ─=≡Σ(((つ•̀ω•́)つ)指针是前置技能,这时候又要祭出这篇文章了哈哈哈哈哈哈那么直接开始吧动态树(Link Cut Tree,LCT),中文和英文对不上,但是却反映了这玩意的两个特征:支持动态操作,如不断地加边,删边...原创 2019-10-11 21:12:00 · 1033 阅读 · 3 评论 -
[CodeForces 280D] k-Maximum Subsequence Sum(毒瘤线段树)
分析对于每个询问,执行k次如下操作:求[l,r]的最大子段和,加进ans,然后把该字段所有元素变成它的相反数。当然,这个过程中如果[l,r]的最大子段和出现了负数,直接退出。输出答案。直观上这个做法很好理解,相当于很多次求前缀和的过程。据说可以用网络流证。原创 2019-10-09 19:09:45 · 303 阅读 · 0 评论 -
【NOIP2018提高组】D1T1 铺设道路
文章目录题目思路考场考场代码hack题外话正解题目题目描述春春是一名道路工程师,负责铺设一条长度为nnn的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是nnn块首尾相连的区域,一开始,第iii块区域下陷的深度为did_idi。春春每天可以选择一段连续区间[L,R][L,R][L,R],填充这段区间中的每块区域,让其下陷深度减少 111。在选择区间时,需要保证,区间内的每块...原创 2018-11-17 10:00:16 · 552 阅读 · 0 评论 -
【AtCoder】AGC006 Minimum Sum
文章目录题目题目大意思路代码题目传送门题目大意给出一个NNN的排列a1,a2,...,aNa_1,a_2,...,a_Na1,a2,...,aN,求∑l=1N∑r=lNmin{al,al+1,...,ar}\sum\limits_{l=1}^{N}\sum\limits_{r=l}^{N}\min\{a_l,a_{l+1},...,a_r\}l=1∑Nr=l∑Nmin{al,...原创 2018-10-03 15:36:26 · 278 阅读 · 0 评论 -
【UVA - 1354】Mobile Computing(搜索+存储解答树+线段树思想+树形DP思想)
前言题目题目大意分析代码前言确实是一道从未遇见过的神奇搜索题。题目传送门题目大意在一个宽度为r(0<r<10)r(0<r<10)r(0rrr为浮点数)的房间中,你想利用杠杆原理挂起s(1≤s≤6)s(1≤s≤6)s(1\leq s\leq 6)个物品,每根木棍的长度都是111,木棍的两端可以挂一个物品,或者挂另外一根木...原创 2018-08-27 17:44:22 · 656 阅读 · 0 评论 -
C++二叉搜索树动图详解
二叉搜索树概念实现数据结构初始化构建新结点插入查找删除查找前驱/后继删除完整代码题目代码二叉搜索树二叉搜索树/排序二叉树/二叉查找树都是一样的。概念二叉搜索树满足这样一个性质: 每个结点有一个关键字keykeykey。 对于结点aaa,它左子树里面所有结点的key&lt;a.keykey&lt;a.keykeykey≥a...原创 2018-07-24 11:41:14 · 894 阅读 · 0 评论 -
【堆】这是要搞事情啊——建立
interesting!堆:简单的说就是一棵完全二叉树的先序,满足任意父结点大于子结点的叫大根堆,反之则是小根堆。建立建立(小根堆)算法(简单粗略加通俗):循环以下步骤把此数(a[i])“塞”到堆尾,然后不停的和它父结点(a[i/2])比较,小就换。给一个硬模拟的代码:void put(int k){ int now,next;//now子结点,next原创 2016-10-03 12:17:11 · 476 阅读 · 0 评论 -
【堆】这是要搞事情啊——取出
堆是什么?请点击取出取出加删除元素(小根堆)算法(简单粗略加通俗):1.取出根结点。2.最后一个节点将根结点覆盖,len--。3.循环:把根结点和它儿子中小的一个交换,直到没有儿子。硬模拟:int get(){ int now,next,res; res=heap[0]; heap[0]=heap[--len]; now=0; while(now*2原创 2016-10-08 13:50:28 · 369 阅读 · 0 评论 -
C++树状数组详解
引入如果给你n个数,然后进行q次询问,每次询问一个区间[x,y]的和,你会怎么做? 第一种方法:最简单的方法,用数组存起来,每次枚举x-y,ans加起来就可以,时间复杂度O(qn),十分慢。 第二种方法:或许大多数人会使用前缀和数组:sum[i]=a[1]+a[2]+…+a[i],所以求[x,y]只需要输出sum[y]-sum[x-1]即可,时间复杂度O(n),这是最快的方法之一了。原创 2017-04-28 13:32:53 · 11857 阅读 · 0 评论 -
【NOIP2016普及组】复赛——海港
好的,说说这道题的思路,爆搜队列嘛:用一个结构体队列存每个人来的时间和他的国籍,用一个vis数组存每个人来的次数,是第一次来sum便加一。然后从前面第一个人开始扔(原谅我用这个词,因为我找不到更好的词了)下船,直到第一个人与当前这艘船相差没超过1天即可,每扔一个人便vis[此人国籍]减一,当这个人来的次数为0时,sum减一。就这样,既不爆时间也不爆空间,完美!原创 2016-12-22 13:43:28 · 3837 阅读 · 0 评论 -
【图论】【二叉树】以先序字符串方式建立二叉树
问题 I(1186): 【基础算法】以先序字符串方式建立二叉树时间限制: 1 Sec 内存限制: 64 MB题目描述输入一个二叉树的先序串,输出其后序遍历结果。如果结点的子树为空,先序串的对应位置为空格符。输入第1行:先序串(结点数≤26,以单个大写字母表示)输出第1行:后序序列样例输入Copy (如原创 2017-01-21 08:27:12 · 1505 阅读 · 0 评论 -
【树状数组】Stars
C - Stars Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that a原创 2017-03-03 14:05:11 · 2297 阅读 · 4 评论 -
【AVL】宠物收养所
【HNOI2004】宠物收养所时间限制: 5 Sec 内存限制: 128 MB题目描述最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养所的宠物一个原创 2017-03-30 13:07:52 · 1203 阅读 · 0 评论 -
Splay树
对于被AVL虐得像那啥一样的我们,Splay的到来是无疑是拯(huo)救(shang)人(jiao)民(you)。Splay树,又称伸展树,事实上,它根本就不是平衡树!然而它的平均时间复杂度确是O(log n)。唯一和AVL树一样的是:转转转,转转转……#----------------------------------------------------------原创 2017-03-30 14:00:36 · 1027 阅读 · 0 评论