随笔分类 - 算法学习
摘要:单点增加,区间求和program ex1;var data:array[0..400000]of int64; a:array[0..100000]of int64; n,i,m,c,x,y:longint;procedure build(p,l,r:longint);var mid:long...
阅读全文
摘要:图论算法小结noip2015要到了,复习一下基本图论。最短路(poj2387)SPFAprogram gtrh;var w,a:array[0..1000,0..2000]of longint; q:array[0..50000]of longint; dis:array[0..1000]...
阅读全文
摘要:线段树模板(以求和为例)单点更新,区间查询program stree1;var dat:array[0..400000]of longint; n,i,m,len,x,y,v:longint;function min(x,y:longint):longint;begin if xy then ...
阅读全文
摘要:单调队列,顾名思义就是队中元素都是单调的队列,它们即可以是单调递增,也可以是单调递减的,单调队列有着重要的应用。 通过几道经典题目来熟悉单调队列: 1.集合 若一个数x在集合中,则2x+1,3x+1也在集合中,已知开始1在集合中,求集合第n大的数字。 分析:如果用朴素的方法对付不了很大的数据,可以...
阅读全文
摘要:通过USACO草地排水学习了一下网络流,终于写好了几个模板。最大流BFS求增广路径简述:通过BFS在网络中找出一条最短增广路径并修改流量(前向弧加可改进量X,后向弧则减去X),当不存在增广路径时得出最大流,时间效率O(nm^2)。program ditch;var c,f:array[0..200...
阅读全文
摘要:最近看了一些大神的博客,对kmp有了初步的一点认识,简单地写一下。 kmp是用来在一个字符串A中查找一个子串B的,用传统的方法是从A的第一位开始和B的第一位比较,若相等则比对下一位,B的某一位与对应的A的字符不匹配,则回过头,将A的第二位同B的第一位比较,重复之前的操作,时间效率为O(m*n),我...
阅读全文
摘要:单词查找树,即trie树,又叫字典树或前缀树,是一种树型结构。用于统计,排序,保存大量的字符串,效率较高,主要是以空间换时间。 但我们遇到大量的字符串要进行存储,并且要在其中查找某些字符串时,如果用一般数组保存从头到尾扫一遍要O(n)的时间效率,显然这不够好,因为我们多比较了许多无用的字符串, 如...
阅读全文
摘要:高精度代码加法procedure add(var a,b,c:arr);var i,x,len:longint;begin len:=max(a[0],b[0]);x:=0; for i:=1 to len+1 do begin c[i]:=a[i]+b[i]+x; x...
阅读全文
摘要:哈希表,又叫散列表,它可以提供快速的插入查找操作,对于大规模数据的查找时间空间效率会很高。哈希表构造方式有多种,其中取余法在比赛中最常用。 如果读入很多值非常大的数,让你判断一些数是否出现过。如果用桶来记录,空间开不了那么大。如果排序后来查,时间效率又低。但可以通过hash优化解决这个问题。 ...
阅读全文

浙公网安备 33010602011771号