第二题反正就是对于dp[i]=min(dp[j]+1)(j=i-1或者所有a[j+1]!=a[i]的位置)进行计算优化吧,可以用个数组存a[i]对应的dp[i-1]的最小值,然后区间查询[1,a[i]-1]和[a[i]+1,n]的最小值,离散化一下加个线段树就行