范浩强wc2012谈谈各种数据结构.pdf

从大象讲起——说说各种 数据结构。 范浩强 自我介绍? ● 略吧。 先从大象说起。 ● 先不着急说数据结构的事。 ● 先从大象那天说起。 ● 23rd IOI Day2 和动物在一起的一天。 ● 鳄鱼crocodile ● 大象elephant ● 鹦鹉parrot 最“简单”的鹦鹉。 ● 为什么说是最“简单”呢?因为用到的数据结构只 有数组。 ● 为什么要给“简单”加引号呢?因为它并不简单。 鹦鹉。 ● 你有一群鹦鹉。每个鹦鹉可以记住8 个二进制 位,即,一个0 ~255 之间的自然数。 ● 你告诉了一些鹦鹉一些数,之后,让它们飞到另 一个人那里。每个鹦鹉忠实地告诉了那个人(接 收者)它记住的数是多少。 ● 你想通过这个方法传递一个消息。但是,鹦鹉有 个小问题,就是鹦鹉到达的顺序是随机的。 鹦鹉。 ● 例如: ● 你发送了3 只鹦鹉: ● 1 9 9 8 ● 到达接收者那里很可能变成了: ● 9 8 1 9 ● 你要在这种状况下,通过发送最少个数的鹦鹉来 传递消息。消息可以视作一个N 位的二进制数。 鹦鹉? ● 这题出得不错。。。但是,怎么做呢? ● 主要矛盾:乱序到达? ● ● 想法1 :每个鹦鹉记住自己是第几个(发送位置 码)。 ● 每个鹦鹉记住一个数4x+y ,其中y 表示一个2 位的消息(0/1/2/3) ,x 表示这个消息在原文中 的位置。 鹦鹉。 ● 0 1 3 1 ● = 0 5 11 13 ● 到达接收者那里之后 ● 5 13 0 11 ● 接收者把它们从小到大排序 ● 0 5 11 13 ● 之后分别模4 ● 0 1 3 1 ,很神奇吧。。。 嗯,很和谐。 ● 通过这种方法最长能发送多长的消息呢? ● X 的取值是[0,64) ,能最多标记64 个位置,每个位置2 位, 所以最长128 位,即16 字节。 ● 如果要发送N 个字节(8N 位)的消息,要用4N 个鹦鹉。 ● 这么做有多少分? ● 子任务1 ,2 :很水,一共32 分。 ● 子任务3 (18 分) ● N=16 ● 鹦鹉数不超过10N ● 哈哈,一共50 分到手了! 鹦鹉?。 ● 子任务4 (29 分) ● 1=N=32 ● 最多发送10N 只鹦鹉。 ● 这个怎么办?

文档评论(0)

1亿VIP精品文档

相关文档