「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用树状数组. 接下来如果直接用优先队列计算最小拓朴序就可以得到32分的好成绩. 如上方法复杂度为\(o(nlog(n))\),远远小于给定时限. 尝试引入随机算法. 每个数都定义一个优先级\(rank\). 用爬山求出局部最优解: 每次先随机生成\(rank\)数组,然后随机一个点,试图将该点$r