只过了前3题,d就不记了。
A题是构造一个排列,使得满足 ppi = n - i + 1。样例给了4个数构成循环的例子。正解就是这么做的,中间的自己走回自己,其它的4个4个一组循环。如果模4余2就无解。
B题定义函数f(n,k),把n个数的排列按k个分组,每次把每组第一个放到最后,其余的前移。最后一组可以不满。问f(f(...f(p,2)...,n)的最后排列。因为总组数sigma(n/i)<=2*10^7,所以可以暴力做。非第一个前移可以看成头指针往前移一格;第一个放最后可以看成一个链的变化,每个往后移k个位置。注意判末尾就能过了。
C题是给出长为n的若干组括号组成的序列,有一些的反括号已经定义好。求一个合法的括号序列。括号匹配,常见思路是用栈解决,这题也不例外。没什么特别要记的。