传送门:bzoj2817
题解
考虑拆去绝对值符号,而数列的相对大小波动如下:
发现只有转折点的数有贡献,可以套用两个套路:
- 从小到大插入去掉绝对值的影响
- D P DP DP只需要记录拆分成了几段(相对位置)
设 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]表示依次插入了 1 − i 1-i 1−i,分成了 j j j段,差值之和为 k k k的方案数:
插入 i + 1 i+1 i+1时有以下情况:
- 左右两边都有数, f [ i ] [ j ] [ k ] × ( j − 1 ) → f [ i + 1 ] [ j − 1 ] [ k + 2 ( i + 1 ) ] f[i][j][k]\times (j-1)\to f[i+1][j-1][k+2(i+1)] f[i][j][k]×(j−1)→f[i+1][j−1][k+2(i+1)]
- 只有一侧有数, f [ i ] [ j ] [ k ] × 2 j