
数据结构
文章平均质量分 78
qichi_bj
这个作者很懒,什么都没留下…
展开
-
动态平衡二叉搜索树的简易实现,Treap 树
Treap 树是一种易于实现的近似平衡的二叉搜索树。Treap 每个结点包括值和优先级两个属性,值满足二叉搜索树性质(左public class TreapTree { public static class Node { public int v; public int p; Node lc; Node rc; public Node(int x)原创 2012-11-27 21:59:49 · 878 阅读 · 0 评论 -
多路文件归并,败者树算法
闲来无事,做了一个多路文件归并的工具,用败者树选择从多路输入中选择一个最小者,空间复杂度为O(K),K为归并输入的路数。该实现没有考虑最佳归并路径,等日后有空了再实现一个最佳归并路径的算法;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;impor原创 2012-11-22 20:55:27 · 636 阅读 · 0 评论 -
X-Plosives问题, LA 3644, 并查集算法
利用并查集检测回路。package ProgrammingContest;import java.io.File;import java.util.Scanner;public class XPlosives_LA_3644 { public int MAX = 100000; public int[] P = new int[MAX]; //初始化并查集,每个元素为一个原创 2012-11-15 22:14:12 · 553 阅读 · 0 评论 -
区间最小值查询,RMQ,Sparse-Table算法
给一个N元数组A[0..N-1],设计一个数据结构,支持查询操作Query(L,R),计算min{A[L]...A[R]};RMQ问题可以做到O(n)的预处理,O(1)的查询复杂度;以下JAVA代码是O(nlogn)的预处理,O(1)的查询复杂度;参考文献:《算法竞赛入门经典训练指南》P197,刘汝佳,陈锋package ProgrammingContest;public cl原创 2012-11-14 06:51:45 · 1063 阅读 · 0 评论 -
动态区间最小值查询,支持点设置,线段树
从周二来镇江出差到现在已经3天了。这几天镇江细雨绵绵,天气异常阴冷,更兼近来事情多有不顺,心情比较沮丧。今天与客户讨论结束,下午闲暇,却心乱如麻,半天时间在焦躁中浪费了。晚上静下来,整理了一下前一阵看的线段树算法:// 用线段树实现动态区间最小值查询,对源数组A[0..N-1]支持更新操作和查询操作:// update(int i, int v) 将数组第i个元素值设置为v, i属于区间原创 2012-11-22 23:28:34 · 684 阅读 · 0 评论 -
动态区间最大值最小值区间和查询,支持区间设置,线段树
对区间 [0,N-1] 支持两种操作:1. update(L, R, v) 将区间[L,R] 的所有值设置为 v;2. query(L, R) 查询区间 [L, R] 的最大值、最小值、区间和;利用线段树解决该问题,更新时,对某区间的设置操作不需要分解到其每一个子区间(否则可能要更新每一个叶子节点),只需在该区间上做设置标记;在查询时,遇到有标记的区间,将标记 pushdown 到子区原创 2012-12-03 09:21:57 · 5494 阅读 · 0 评论 -
动态连续区间和查询,Binary Index Tree 算法
给定N元数组A[0]...A[N-1],设计一个数据结构,支持两种操作:1. add(i,v) 将A[i]元素值增加v,下标i区间为[0..N-1]2. sum(L,R) 查询连续区间和 A[L] + A[L+1] + ... + A[R], 下标L,R区间为[0..N-1]二叉索引树 Binary Index Tree 支持动态连续区间和的查询,BIT含有N个结点,每个结点存原创 2012-11-18 15:44:11 · 2553 阅读 · 0 评论