数据结构
文章平均质量分 75
xinge008
这个作者很懒,什么都没留下…
展开
-
ural1521-线段树解约瑟夫问题
使用sum[]数组来记录当前区段的个数 pushup来更新子节点与父节点的关系,实现很简单,但是要注意每次节点个数在减少,注意查询时要求的长度要模一下当前节点的个数 #include #include #include using namespace std; const int maxn=100010; int sum[maxn<<2]; void pushup(int idx原创 2012-08-07 19:29:22 · 754 阅读 · 0 评论 -
数据结构之并查集
并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数、最小公共祖先、带限制的作业排序,还有最完美的应用:实现Kruskar算法求最小生成树。其实,这一部分《算法导论》讲的很精炼。 一般采取树形结构来存储并查集,在合并操作时可以利用树的节点数(加权规则原创 2012-08-07 15:03:55 · 494 阅读 · 0 评论 -
并查集题目推荐
POJ 1611 The Suspects 最基础的并查集 POJ 2524 Ubiquitous Religions 最基本的并查集 POJ 1182 食物链 并查集的拓展 注意: 只有一组数据; 要充分利用题意所给条件:有三类动物A,B,C,这三类动物的食物链 构成了有趣的环形。A吃B, B吃C,C吃A。也就是说:只有三个group POJ 2492转载 2012-08-07 15:07:24 · 627 阅读 · 0 评论 -
数据结构之树状数组
package 树状数组; //低位操作 //修改操作 //求和 //删除 //插入 //取第K小 public class 模版 { // 点更新:向上路径更新关键字; // 区间更新:向下路径更新关键字; // 更新区间查询点:将inc与get方法互换。 //要注意一个超时陷阱:x==0的情况 static int N; static int c[]=new原创 2012-08-07 16:07:59 · 342 阅读 · 0 评论 -
poj2481-树状数组的应用
//***********************************************解决思想************************************ 对于这种有两个关键字并且具备单调性的问题,使用树状数组优化的一般方法是固定一个关键字(或者区间的端点),然后查询另一个关键字前n项和的性质确定当前对象的答案。 1.此题先按s由小到大排序,如果s相同根据t由大原创 2012-08-07 16:11:56 · 594 阅读 · 2 评论 -
poj3368--线段树统计区间的最大频率
今天又做了点图论和线段树的题目,比较有感触的就是这道,一开始感觉有点像hotel那道题,感觉记录区间的左右值和左右的最大频率以及总的最大频率即可,最后比较取最大, 后来在初始化的时候RE了一次,然后就AC了,感觉线段树终于入门了 import java.io.*; public class Main { static StreamTokenizer in = new Strea原创 2012-08-08 19:53:57 · 787 阅读 · 0 评论