题目描述
你是一位典狱长(人称牢大,因为是牢中老大)
现在你的监狱中有n名囚犯,编号为1到n(保证n是偶数),你决定大发慈悲的给他们最后一次机会。
你决定举行一场游戏,如果他们能都通过游戏,就能重获自由!
游戏是这样子的:
-
你将带有囚犯编号的纸条,随机打乱并放回n个盒子里(输入中给出),然后再放进一个密闭的房间里,每次只能有一位囚犯进入房间,看题随机打开其中的n/2个盒子,寻找自己的号码。
-
检查完成以后,他们就必须离开房间,并且房间恢复原状,不可有任何改变,且全程不能和其他囚犯有任何交流,也不可以做任何标记。
-
然后让下一个囚犯进来,重复以上流程,直至n个囚犯都检查完,以此类推。
-
如果全部的n个囚犯都在检查的n/2盒子里找到了自己的编号,那么则规定他们通过游戏,重获新生
-
反之,如果至少有一个人没有找到他们自己的编号,则这n个人会被立即处决。
这样的游戏看似是每个人1/2的概率获胜,n个人就是1/2的n次方,但是,这些囚犯都是聪明人,他们很快就想到了最佳的通过游戏的方法:
-
每人每次进去第一个打开自己编号对应的的盒子,当然,这个盒子里的号码大概率不是自己的编号,只需要再打开对应的盒子,再进行寻找即可。
-
通俗的来说,第i个人进去先打开盒子i,盒子里的号码是a[i],如果a[i]不是自己的编号,再去打开盒子a[i],依此类推......
-
这样就会组成一个环状,如果你的编号所在的换的长度<=n/2,那么你就一定会在n/2次机会里面找到自己的编号。
输入
第一行一个正整数n表示囚犯个数(n<=1e4)
第二行一个数组a,共n个数。a[i]表示第i个盒子里放的号码
输出
如果囚犯可以被释放,则输出一行字符串"FREE"
否则输出"DIE"
(输出均不带引号)
提示
牢大!!!
提示样例:
会组成三个环:
-
a[1]=3,a[3]=5,a[5]=4,a[4]=1,也就是盒子1-3-5-4,长度为4。所以编号为1 3 4 5的人都能在第四次找到自己的号码。
-
a[2]=6,a[6]=8,a[8]=2,也就是盒子2-6-8,长度为3,所以编号为2 6 8的人都能在第三次找到自己的号码。
-
a[9]=10,a[10]=7,a[7]=9,也就是盒子9-10-7,长度为3,所以编号为9 10 7的人都能在第三次找到自己的号码。
-
所有人均能在n/2也就是5次以内找到自己的号码,所以这10个人会FREE。
提示输入1:
10
2 3 4 5 6 7 8 9 10 1
提示输出1:
DIE
tips:
这十个数构成一个环:a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10,a[10]=1,长度为10,也就是这十个人想要找到自己的编号需要十次才可以,所以DIE
提示输入2:
20
5 4 8 3 6 7 9 11 10 1 2 15 12 13 14 17 18 19 20 16
构成四个环:
-
a[1]=5,a[5]=6,a[6]=7,a[7]=9,a[9]=10,a[10]=1,也就是1-5-6-7-9-10,长度为6,所以编号为1 5 6 7 9 10的囚犯都能在第六次找到自己的编号。
-
a[2]=4,a[4]=3,a[3]=8,a[8]=11,a[11]=2,也就是2-4-3-8-11,长度为5,所以编号为2 4 3 8 11的人都能在第五次找到自己的编号。
-
a[12]=15,a[15]=14,a[14]=13,a[13]=12,也就是12-15-14-13,长度为4,所以编号12 15 14 13的人都能在第四次找到自己的编号。
-
a[16]=17,a[17]=18,a[18]=19,a[19]=20,a[20]=16,也就是16 17 18 19 20,长度为5,所以编号为16 17 18 19 20的人都能在第五次找到自己的编号。
-
20个人均能在10次内找到自己的编号,则FREE
有严格的数学证明可以证明题中的方法是这n个人活下来的最佳方案!高达31%