数据结构题目选讲.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构题目选讲

启发 图可以变为树 关系可以用距离表示,模3意义下加加减减 想到了什么 并查集! 具体步骤 用father[n],path[n]数组分别记录当前结点的祖先和到祖先的距离。 这里规定距离为0时为同类,为1时表示被祖先吃,为2时表示吃祖先。 初始时每个元素的祖先是自己,距离为0。 对于每一句话,首先判断是x,y是否大于n,是否出现自己吃自己的情况,满足时讨论如下两种情况: 如果d=1,表示读入的x和y是同类,这时分别找到x,y和祖先fx,fy,如果fx=fy,说明他们是同一祖先。这时判断x和y到祖先的距离是否相等,显然,不相等证明这是一句假话。如果fxfy,说明x和y不在同一集合中,此时将这两个集合合并。合并时可以通过一个简单的向量关系算出fx-fy的距离,即path[fx]=path[y]-path[x]. 对于每一句话,首先判断是x,y是否大于n,是否出现自己吃自己的情况,满足时讨论如下两种情况: 如果d=2,表示x吃y,同样的找到它们的祖先,若fx=fy,则根据向量关系判断它们的距离是否矛盾,即检查path[x]-path[y]-2是否为0。若fxfy,则类似地根据已有的向量关系算出fx-fy的距离,即 path[fx]=path[y]-path[x]+2. 注意的地方是,因为path在运算过程可能出现负数,为避免这一情况且保证path的性质,可以在每次对path运算后加三再对三取模。 int Fa[maxn],Dis[maxn]; int Find(int x){ if(x==Fa[x])return x; int y=Find(Fa[x]); Dis[x]+=Dis[Fa[x]]; return Fa[x]=y; } 例题二 Input Output Sample Input Sample Output 1 2 例题二 自由讨论 一些想法 共三维 x,y,c c很小 对c暴力处理,好像可以接受 一些想法 如何对某个颜色快速维护子矩阵中该颜色的数量 可选择的数据结构 四分树 二维线段树 二维树状数组 各种数据结构的优势和劣势 兼顾编程复杂度和运行效率 例题三 Input 输入共两行,第一行为一个整数N,N表示物品的个数,1=N=100000。第二行为N个用空格隔开的正整数,表示N个物品最初排列的编号。 Output 输出共一行,N个用空格隔开的正整数P1,P2,P3…Pn,Pi表示第i次操作前第i小的物品所在的位置。 注意:如果第i次操作前,第i小的物品己经在正确的位置Pi上,我们将区间[Pi,Pi]反转(单个物品)。 Sample Input 6 3 4 5 1 6 2 Sample Output 4 6 4 5 6 6 自由讨论 要求 支持区间最小值查询,区间翻转的数据结构 如果没有翻转…… 支持翻转的数据结构 块状链表——时间效率√n 平衡树 做法 无与伦比的splay和spaly 欢迎用作模版题 Picks博士观察完金星凌日后,设计了一个复杂的电阻器。为了简化题目,题目中的常数与现实世界有所不同。 这个电阻器内有编号为1~n的n个独立水箱,水箱呈圆柱形,底面积为1m2,每个水箱在顶部和底部各有一个阀门,可以让水以1m3/s的流量通过,每个水箱的上阀门接水龙头,可以无限供应水,下阀门不接东西,可以让水流出。水箱顶部和底部都有一个接口,水的电阻率为1Ω?m。 水箱的高度足够高,有一个导电浮标浮在水面上,通过导线与水箱顶的接口相连。一开始时第ii个水箱中有ai m3的水。 例题四 Picks博士接下来就需要对这个复杂的电阻器进行调试。他会进行以下五种操作。 1、打开编号在[l,r]中的所有水箱的上方阀门x秒,然后关上它们的上方阀门。 2、打开编号在[l,r]中的所有水箱的下方阀门x秒,然后关上它们的下方阀门。 3、将编号在[l,r]中的所有水箱的下方阀门与大海通过连通器以一定方式相连,使得这些水箱中都恰拥有x m3的水,然后关上它们的下方阀门,撤去连通器。 4、在第y个水箱的上下方接口处接上一个电动势为1V的电源,电源没有内阻,Picks博士会测量出通过电源的电流大小,之后撤去该电源。 5、由于水浸泡过的地方会留下明显的水渍而没有被水浸泡过的地方不会有,Picks博士可以据此测量出此时第y个水箱的水渍高度,以推断曾经最多有多少水,节约他的建造成本。 现在,他请你来帮他做预实验,你能告诉他每次测量得到的电流大小以及测量得到的最多的水量是多少吗? 例题四 输入格式 第一行两个数:n,m。 接下来一行n个数,第i个数表示初始时第i个水箱内有aim3的水。 接下来m行中,第i行第一个数ti表示操作类型: 若ti=1,则接下

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档