很容易想到dp的模型,这一行的转移到下一行,但是复杂度很高,要优化
首先可以初始化出距离和高兴值的sum,这样就可以o1得到距离
然后是用单调队列优化dp
首先把dp分成两部分,从左边过来和从右边过来,从1到m扫描的过程中,可以发现满足条件的点是一个滑动窗口,要求窗口中的最值
只要维护一个单调队列,每次入队,出队,保持单调性,就能在o1时间得到最值,从而完成状态转移
要想出用优先队列做还是不太熟悉,还有就是优先队列里头的大小比较的值就是dp[I+1][K] + k到j的happy值,因为后面再加上其他的,对大小关系没有影响