JOJ 1115 1116 1117 1118

1115http://acm.jlu.edu.cn/joj/showproblem.php?pid=1115

非常简单,直接按照题目说的来做就可以。

1116http://acm.jlu.edu.cn/joj/showproblem.php?pid=1116

一开始读题不仔细,以为只有两台电脑,这样的话就是一个简单的模线性方程。后来发现电脑数不超过20,觉得应该是中国剩余定理,结果这题最简单的模拟都0.00S过了。

1117http://acm.jlu.edu.cn/joj/showproblem.php?pid=1117

这个题目就是一个原始的广度搜索。存储字符串一开始想用Trie树,但是觉得复杂,用hash表就很简单。我用的是双重散列解决冲突,这样可以省去一个指针成员,能节省不少空间。具体的做法就是为每个人名分配一个ID,用无向图表示他们之间的关系,如果两个人合作发表过一篇论文,他们对应的ID之间就有一条边相连。首先读入p篇论文描述,从中构造出图,然后从Erdos, P.开始进行广度搜索,然后依次读入n个人名,每读入一个人名就计算出相应的ID,根据ID检索出他的Erdos编号。用Trie树的实现思路就是把所有的人名建成Trie,从0开始为依次读入的每个新的名字分配ID。我的程序使用双重散列,在一个字符串数组中存储每一个名字,名字的ID就是这个名字在数组中的下标。

1118http://acm.jlu.edu.cn/joj/showproblem.php?pid=1118

原题概述:Ouroboros的意思是食尾蛇,它是古埃及神话中的一种动物。Ouroboros数是这样一类数:它是一个2^nbit的二进制数(n由输入指定),把它的这2^nbit排成一个圆环,依次从每一个bit开始往后数够nbit,这nbit做为一组形成一个nbit的二进制数,显然共能取出2^n个不同的二进制数,这2^n个不同的二进制数互不相同(即从它生成了0---2^n-12^n个数)。而且很显然对于给定的nOuroboros数不唯一,因为任何一个Ouroboros数做循环移位也都会得到另一个Ouroboros数。题目中只关注最小的那个Ouroboros数。输入n,k,要求输出对应的最小的Ouroboros数生成的第k个数。

例如,对于n=20011就是一个Ouroboros数,因为把它排成一个圆环,依次取出2位,得到:00, 01, 11, 10。而且,0011还是n=2时的最小的Ouroboros数。其它的Ouroboros数是0110,1100,1001。那么,给定n=2k = 0时应该输出0,k=1时应该输出1k=2时应该输出3k=3时应该输出2

分析:先想到的,找到一个Ouroboros数,由它循环移位得到的其它数也都是Ouroboros数,共有2^n个,它们互相等价,那么给定n,这样的等价类是否唯一。但这个问题对问题求解没有关系。

穷举所有的Ouroboros数显然不可能,因为给定nOuroboros数是一个2^n位的二进制数,它的范围就是2^(2^n)。由于Ouroboros数生成了0---2^n-12^n个数的一个排列,这个排列中的每个数s都有这样的特点:s是一个nbit的二进制数;s的高n-1bit是它的前趋的低位的n-1bits的低n-1位的bit是它的后继的高n-1bit。因此,只要找到了一个0---2^n-1的一个闭合的字面值最小的排列,就找到了问题的解。

由于s和它的后继只有一个二进制位不同,所以s只有两个可能的后继:2 * s mod 2^n, (2 * s + 1) mod 2^n。令第一个数为0,搜索即可。

我的程序使用搜索,AC的成绩是0.01S。这个题目应该还能往下推导得出数学公式,但是没有进展,暂时把思路记下来。这个序列的特征是非常有规律的,把前几个序列记在这里:

n = 2:  0  1  3  2

n = 3:  0  1  2  5  3  7  6  4

n = 4:  0  1  2  4  9  3  6 13 10  5 11  7 15 14 12  8

n = 5:  0  1  2  4  8 17  3  6 12 25 18  5 10 20  9 19  7 14 29 26 21 11 22 13 27 23 1

5 31 30 28 24 16

n = 6:

0   1   2   4   8   16  33  3   6   12  24  49  34  5   10  20  40  17  35  7

14  28  57  50  36  9   18  37  11  22  44  25  51  38  13  26  52  41  19  39

15  30  61  58  53  42  21  43  23  46  29  59  54  45  27  55  47  31  63  62

60  56  48  32

你可能感兴趣的:(JOJ 1115 1116 1117 1118)