T1
比较显然的约瑟夫环
考虑当前轮,设为第(i)轮死的人的编号是多少,应该为((i-1)\%(n-i+1)+1),这样可以(O(n^2))的从开头到现在更新编号,考虑(N^2)的时间复杂度主要来自更新编号,但其实有用的只有一个,就是最后留下的那个,所以可以倒着推回去,可以倒着推的原因是这是一个环,可以以任意一个点为初始标号,假设最后剩下的人在第(i)轮的标号为(x),说明它距离(1)有(x)个单位,然后我们又知道(i-1)轮中谁死了,设为(p),那么当前人的编号在(i-1)轮应该是(p+x),超过了总人数就(\%)一下,因为第一个人是(p+1)号,推一下就有了,注意环的性质。
T2
随便模拟
T4
发现最后合法的答案是唯一的,所以维护答案的(hash)值就行。