摘要: 继续数据结构的复习,本次的专题是:并查集。 并查集,顾名思义,干的就是“并”和“查”两件事。很多与集合相关的操作都可以用并查集高效的解决。 两个操作代码: int Find(int x) { if (tree[x].parent != x) { tree[x].parent = Find(tree[x].parent); } return tree[x].parent; } void Merge(int a, int b, int p, int q, int d) { if (tree[q].depth > tree[p].depth) tree[p].parent = q; else 阅读全文
posted @ 2011-10-24 17:33 迷茫者的旅途 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 今天先来讨论一下树状数组.问题提出:已知数组a[],元素个数为n,现在更改a中的元素,要求得新的a数组中i到j区间内的和(1<=i<=j<=n).思考:对于这个问题,我们可以暴力地来解决,从a[i]一直累加到a[j],最坏的情况下复杂度为O(n),对于m次change&querry,合起来的复杂度为O(m*n),在n或m很大的情况下,这样的复杂度是让人无法忍受的.另外,如果没有元素的变更,我们完全可以存储sum[1,k](k=1,2,……),然后对任意给定的查找区间[i,j],都可以方便的用ans=sum[1,j]-sum[1,i-1],当然这只是没有元素改变的情况下 阅读全文
posted @ 2011-10-24 15:55 迷茫者的旅途 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 这篇文章只是想表一下决心,终于在昨天开通了博客园的blog,这里有着许多优秀的程序员,不管我能不能成为其中的一员,我想要做的就是朝着这条路走下去。 暑假搞了一段时间的ACM,接着就荒废了好久,现在慢慢的重新拾起,不管明年是否能拿牌,这对自己的编程水平也会有很大的提高。 先制定条硬性规定吧,每天至少一道USACO..至于各个专题的学习,再重新积累起来。 学术学术,holding on!! 阅读全文
posted @ 2011-10-24 15:41 迷茫者的旅途 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目来源:USACO 1.1原题目:Greedy Gift GiversA group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts of money.Each of these friends might or might not give some money to any or all of the other friends.Likewise, each friend might or might not receive money from any or all of the othe 阅读全文
posted @ 2011-10-24 15:10 迷茫者的旅途 阅读(162) 评论(0) 推荐(0) 编辑