摘要: 线段树与树状数组线段树:顾名思义,线段树这个数据结构是为了表示“线段”来设计的(更准确的说法是“区间”),主要应用的是二分的想法。 //二分是divide and conquer 的一种,好的分治策略在降低复杂度方面往往有意想//到的效果//用二分思想设解决的很基础且很优美的问题有 LCA和RMQ 问题//额,知识有限且一时想不起来了,欢迎补充严格的定义很麻烦,但是用图来示例的话很容易理解,下图是表示[0,10]区间的线段树。图一线段树是一颗二叉搜索树,所以理所应当的,它支持以下操作:1.插入2. 删除3. 访问线段树的优势在于 快 , 而且在空间上的冗余不大(约两倍)例如:若要访问区间[1, 阅读全文
posted @ 2012-01-23 20:27 zhouyichi 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 国家集训队1999论文集 陈宏:《数据结构的选择与算法效率——从IOI98试题PICTURE谈起》来煜坤:《把握本质,灵活运用——动态规划的深入探讨》齐鑫:《搜索方法中的剪枝优化》邵铮:《数学模型的建立、比较和应用》石润婷:《隐蔽化、多维化、开放化——论当今信息学竞赛中数学建模的灵活性》杨帆:《准确性、全面性、美观性——测试数据设计中的三要素》周咏基:《论随机化算法的原理与设计》国家集训队2000论文集 陈彧:《信息学竞赛中的思维方法》方奇:《动态规划》高寒蕊:《递推关系的建立及在信息学竞赛中的应用》郭一:《数学模型及其在信息学竞赛中的应用》江鹏:《探索构造法解题模式》李刚:《动态规划的深入讨 阅读全文
posted @ 2012-01-23 16:05 zhouyichi 阅读(343) 评论(1) 推荐(0) 编辑
摘要: Hash哈希表(hash table)的思路是根据关键码值直接访问。哈希表的思路很简单——根据关键码值直接计算出信息的存储地址。通常会为hash table 分配一个一维数组的存储空间,二维数组或多维数组用得比较少但是多维数组应用到hash table上面有一些好处:在多关键字的情况下 hash函数的设计 显得自然设hash 函数是 h(K)Hash表一般支持以下几个操作。1. 插入:计算h(K)并插入2. 查找:计算h(K)并访问3. 删除:增加一些删除标记,以后统一删除(较少使用)Hash的使用有两个比较需要注意的地方:1. Hash函数的设计2. 冲突的解决方法常用的hash函数:直接取 阅读全文
posted @ 2012-01-23 16:04 zhouyichi 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 首先给出正常的并查集的几种操作的伪代码(普遍情况下的并查集)Define TYPE//TYPE 表示数据类型,相当于int之类的Meke_set(x) x.p=xFind_set(x)//路径压缩 TYPE y=x While y.p!=y Y=y.p TYPE z=x While z.p!=z TYPE MID=z.p z.p=y z=MID return yUnion(x,y) TYPE z=Find_set(x) TYPE p=Find_set(y) p.y=z并查集的基本思想是 把对象元素划分为一个一个的集合,并对其进行统一操作并查集有几个特点:1. 每个集合均有一个代表元素,通过这个 阅读全文
posted @ 2012-01-23 13:47 zhouyichi 阅读(301) 评论(0) 推荐(0) 编辑