
题意
有一个数组a给出数组b,$b[i] = mid(a[i-1], a[i], a[i+1])$,mid是中位数,输出一个符合要求的a数组
题解
有一个结论:如果有解,那么一定可以让每个位置最终的值,是它所能影响到的三个中位数之一
设$dp[i][j][k] (1<=i<=n, 0<=j,k<=3)$表示到求到a的第i位时前i-2位合法,第i位放$b[i-2+j]$,第i-1位放$b[i-3+k]$时是否合法,那么判断dp[i][j][k]合法的条件为$dp[i-1][k][q] (0<q<3)$合法且$mid(b[i-2+j],b[i-1-2+k],b[i-2-2+q]) == b[i-1]$也就是判断a[i],a[i-1],a[i-2]的中位数是否为b[i-1],注意一下头两个数和尾两个数的边界
代码
1 |
|