上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 59 下一页
摘要: 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n。地下洞穴是一个树形结构。这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d)。他们都会走最短路径。现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友? 小 阅读全文
posted @ 2017-05-06 08:13 ANhour 阅读(492) 评论(1) 推荐(0)
摘要: 看了好多dalao的博客,就总结一下啦ovo tarjian算法很是神奇,它的作用是求lca。它是一种离线算法。 在线是指输入一个询问输出一个结果。 离线是将询问一次性输入,一起处理。 tarjan它是将m个询问打乱顺序,在每个结点上挂上它的询问,利用dfs和并查集进行处理。 对于一个结点u,如果要 阅读全文
posted @ 2017-05-05 11:42 ANhour 阅读(760) 评论(2) 推荐(0)
摘要: (1)树(tree)【题目描述】从前在森林里面有一棵很大的树,树上住着很多小动物。树上有n个房间,第i个房间都住着ai 只第bi 种小动物。这n个房间用n − 1条路径连接起来,其中节点1为整棵树的根。现在每个房间x的小动物们都想知道,以x为根的子树中有多少只他们的同类?【输入格式】第一行一个整数n 阅读全文
posted @ 2017-05-05 09:53 ANhour 阅读(876) 评论(0) 推荐(0)
摘要: 终于学完了线段树,没学之前觉得特牛x,看了好几位dalao的博客,就整理一下,增强理解记忆ovo。 一、引入 线段树是一个数据结构。数据结构是先有需求,后有数据结构,用来将数据进行处理,达到优化的目的。(闵学长讲题步骤:先暴力,后用数据结构优化)。 问题: 给出n个数,n<=**,和m个询问,每次询 阅读全文
posted @ 2017-05-02 22:02 ANhour 阅读(199) 评论(0) 推荐(0)
摘要: 1、栈 (1)栈的模拟 特点:先进后出 eg1:火车进站 实际就是模拟一个栈 #include<bits/stdc++.h> using namespace std; const int maxn=1000; int Stack[maxn],a[maxn],stack[maxn],n,l=1; in 阅读全文
posted @ 2017-05-01 21:12 ANhour 阅读(192) 评论(0) 推荐(0)
摘要: 最近公共祖先:在一个有根树中,结点u、v的最近公共祖先是满足是u,v的公共祖先并且深度尽可能大的结点。 1、倍增法 首先如果两个点的深度如果不同,将深度较大的点跳到与深度较小的点一样的深度,再同时向上跳,首次相遇时即为最近公共祖先。 2、树剖法size x为以x为结点的子树的结点的个数 每个结点和它 阅读全文
posted @ 2017-05-01 21:11 ANhour 阅读(288) 评论(0) 推荐(0)
摘要: 1、二叉堆的操作 (1)取出元素 (2)插入元素 (3)删除元素 //手写大根堆维护 #include<bits/stdc++.h> using namespace std; int heap[1000]; int up(int x) { if(heap[x]<=heap[x/2]) return 阅读全文
posted @ 2017-04-30 21:08 ANhour 阅读(184) 评论(0) 推荐(0)
摘要: 1、大根堆优先队列维护 阅读全文
posted @ 2017-04-29 21:22 ANhour 阅读(327) 评论(1) 推荐(0)
摘要: ,1、常见的输入树的情况 (1)输入每个结点的父亲编号 (2)输入n-1条边的信息 不定根 2、求树的直径树上最长的简单路径为树的直径 在树上任选一点u,以u为根进行一遍dfs,求距离u最远的点s,以s为根进行一遍dfs,找到距离s最远的点t,点s和点t之间的路径为树的直径; 3、找到一个点,其所有 阅读全文
posted @ 2017-04-29 13:21 ANhour 阅读(189) 评论(0) 推荐(0)
摘要: 邻接矩阵: 矩阵算法 位运算时方便 边集数组 前向星: 没有将边挂在点上 而是储存每条边的信息 一般不需要遍历整张图 常用于并查集 方便排序 阅读全文
posted @ 2017-04-28 20:59 ANhour 阅读(167) 评论(0) 推荐(0)
上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 59 下一页