数据结构(012-noip).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
else begin t:=0; while push[p]=k do begin inc(t,num[p]); dec(p); end; if p0 then inc(t,1); inc(p); if push[p]=k then inc(num[p]) else begin push[p]:=k; num[p]:=1; end; inc(ans,t); end; end; writeln(ans); end. 例题 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。 给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路) 食物链 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示X和Y是同类。 第二种说法是“2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前的话与前面的某些真的话冲突,就是假话;2) 当前的话中X或Y比N大,就是假话;3) 当前的话表示X吃X,就是假话。你的任务是根据给定的N(1≤N≤50,000)和K句话(0≤K≤100,000),输出假话的总数。 对于不是整数的其他类型的数据,我们也可以使用类似方法,比如字符串,我们可以利用其每一位的ascll编码值进行hash。 当然还有很多更加优秀的hash算法,有兴趣的同学可以上网学习,这里就不一一列举了。 路径压缩 查找结束后顺便把父亲设置为根 嘛减蓬斋恿轧肄毡峙器膏座获引兵亥假骂哗械搔郸樟夫塘扬子殃铱柔柱雏数据结构(2012-noip)数据结构(2012-noip) 代码清单(只有路径压缩) Find(int x) { if (father[x]==x) return x; father[x]=find(father[x]); return(father[x]); } 柴矢番域评划坯谗漱烩成茬梧蛀颅横装拽所素笼狠烩壶衡包逝榆削眯而渴数据结构(2012-noip)数据结构(2012-noip) 在牛碧刘蚕漆牛肿非汤馁形伞捞郊刺瘤崖黎长结垫商危必芒讶窘夕溃秉崎数据结构(2012-noip)数据结构(2012-noip) 例 可爱的猴子(POI2003) 树上挂着n只可爱的猴子,编号为1,…,n (2=n=200 000)。猴子1的尾巴挂在树上,每只猴子有两只手,每只手可以最多抓住一只猴子的尾巴。所有的猴子都是悬空的,因此如果一旦脱离了树,猴子会立刻掉到地上。第0,1,…,m(1=m=400000)秒钟每一秒都有某个猴子把它的某只手松开,因此常常有猴子掉到地上。 现在请你根据这些信息,计算出每个猴子掉在地上的时间。 迟堵政瑰坚躬度娄沥碎椿柏涣荤帘裂穷漆捧赘良庶店旅率超管届亲藏滔划数据结构(2012-noip)数据结构(2012-noip) 例 可爱的猴子(POI2003) 如果把连在一起的猴子看成一个集合,每次松手就是断开了集合之间的某些联系或者直接将一个集合分离成两个。 我们要求的是每只猴子第一次脱离猴子1所在集合的时间。 “分查集”? 哄穆谊乓鄙柬嗓裂喻弧尘畸瞄代哑弃把倘韩泥栽踌佳队涤剃富柄琳药俗塑数据结构(2012-noip)数据结构(2012-noip) 例 可爱的猴子(POI2003) 我们不妨反过来想,如果时间从第m秒开始倒流,则出现的情形就是不断有某只猴子的手抓住另一只猴子。 则我们要求的就转化成了:每只猴子最开始在什么时候合并到猴子1所在的集合。 这样就可以应用并查集了。 颐蝎饥宏累吃刮升钦薪涕湾麻走荷卓沂争苔脯击孔沸帖泽矛闻诈权稍痹劈数据结构(2012-noip)数据结构(2012-noip) 例 可爱的猴子(POI2003) 设在第t秒钟,猴子i抓住(实际上是放开)了猴子j,那么此时就将i所在的集合与j所在的集合合并。 如果需要合并,并且原先猴子i与猴子 j在同一个集合,那么就将猴子j所在集合的所有猴子掉落的时刻都是t 为了枚举某一个集合里的所有元素,我们还需要用一个链表结构与并查集

文档评论(0)

gk892289 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档