1. 程式人生 > >牛客網NOIP賽前集訓營-提高組(第二場)_B_分糖果

牛客網NOIP賽前集訓營-提高組(第二場)_B_分糖果

題面 考慮容斥(這也能容斥??..) (把和前一位相同的位看作1,不同的看作2,全為2的方案即為所求,這應該就是一個普通的容斥問題了) 先考慮鏈的情況,顯然有 fi=jfjmin(aj+1ai)(1)ij+1 f_i=\sum_j f_j*min(a_{j+1}\ldots a_i)*(-1)^{i-j+1} 這顯然可以用單調棧維護 然後考慮把鏈兩端拼起來 ans=jfj(min(aj+1an)1)(1)nj+1 ans=\sum_j f_j*(min(a_{j+1}\ldots a_n)-1)*(-1)^{n-j+1}

minmin後面的那個減一是為了排除首尾相等的情況 所以在容斥時可以不考慮這種情況 Code (拍了n久拍不出錯…但是隻有70)