- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 树上倍增实现lca
LCA实现方法1.dfs搜索树形成欧拉序列用st算法维护区间最值2.tarjan离线求lca3.树上倍增实现lca(方法如下)模板代码#include#define maxn 100#define max2 20using namespace std;struct node{ int to,next;} poi[maxn*2]
2016-04-30 14:20:59
611
转载 RMQ问题之ST算法
ST算法的基本原理百度一下就可以知道 RMQ(Range Minimum/Maximum Query)问题是求区间最值问题。可以写一个线段树,但是预处理和查询的复杂度都是O(logn)。这里有更牛的算法,就是ST算法,它可以做到O(nlogn)的预处理,O(1)!!!地回答每个询问。 来看一下ST算法是怎么实现的(以最大值为例): 首先是预处理,用一
2016-04-25 09:35:44
297
原创 销售员
题目描述阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去。阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai
2016-04-10 19:42:17
1001
原创 合并果子
背景NOIP2004 提高组 第二道描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。
2016-04-09 21:06:09
431
原创 木板
《高级数据结构》p95 例3-4【算法提点】朴素想法贪心的算法,每次插入木板使木板右端尽量靠左。设每次插入木板后最右端位置为pre考虑每一块木板右端的值=max(p[i],pre+l[i])如果max=p[i]| -----. (----为木板 .为钉子)如果max=pre+l[i]|--------.---- (----为木
2016-04-09 20:43:10
481
原创 有序表的最小和
有序表的最小和【问题描述】给出长度为n得有序表A和B,在A和B中各取一个元素,可以得到n^2个和,求这些和中最小的n个【输入格式】第一行包含一个整数n(n第二行与第三行分别n个整数,从小到大排列【输入样例】31 2 52 4 7【输出样例】345【算法分析】由题意知,A[1]B[1]设C[a,b]=A[a]+B[b]可知对
2016-04-07 23:29:58
1073
原创 堆
堆小根堆const maxn=1000;var n,l,i,temp:longint; a:array[0..maxn] of longint; procedure put(x:longint);var son,temp:longint;begin inc(l); a[l]:=x; son:=l; while (sona[son]) do
2016-04-07 00:01:09
293
原创 Gray码生成
方法一:(1) 1阶Gray码是 0, 1;(2) 设n>1, 且n-1阶Gray码已定义好, 将n-1阶Gray码顺序列一遍, 接下来 将n-1阶Gray码反序列一遍, 顺序列的码每个前面添0, 反序列的码每个前面添1.var n,s,i,s1,k,j:longint; a:array[0..1000] of l
2016-04-06 23:24:40
498
原创 openjudge1.11编程基础之二分查找 04:网线主管
04:网线主管总时间限制: 1000ms 内存限制: 65536kB描述仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置。为购买网线,裁判委员会联系了当地的一个网络解决方案
2015-11-01 18:47:56
808
原创 排列组合基本公式
基本原理1.加法原理 集合S=s1∪s2∪s3..sm且si∩sj=∅(i则s=s1+s2+s3..sm2.乘法原理 s(a,b) 取a有p种,取b有q种 s=p*q公式1.对于集合s(没有重复元素): 从s中n个元素中取r个排列的方案数p(n,r)=n!/(n-r)! 从s中n个元素中取r个组合的方案数c(n,r)=n!
2015-10-06 15:27:59
2402
转载 次小生成树——转载于张鹏飞博客
一.理论准备需要读者事先懂得prime算法,不太了解的请看博主这一篇http://www.cnblogs.com/hxsyl/p/3286956.html,也需要读者对DP了解一些。先看一个结论:次小生成树可由最小生成树换一条边得到 证明:咱换种方式去看待这个结论(一个生成树可以通过换边得到另一个生成树),T是某一棵最小生成树,T0是任一棵异于T的生成树,通过变换T0 --> T1 -->
2015-10-05 11:06:00
465
原创 Tarjan算法
定义在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。Tarjan算法可以用于求一张有向图的最大强联通分量基本参数对于一张有向图上图来自byvoid大牛进行dfs搜索后会出现一棵df
2015-09-19 15:18:00
371
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人