f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]表示第 i i i个数字, j j j表示最后一个数字在 j + k j+k j+k的位置,然后 k k k用二进制表示后面的情况,对于 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k],设 x x x为包括他以内往后 b [ i ] + 1 b[i]+1 b[i]+1位第一个没有做菜的位置,然后用 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k]贡献给 f [ x ] f[x]