Longest Y 字符串,货仓选址模型(600)
生活随笔
收集整理的這篇文章主要介紹了
Longest Y 字符串,货仓选址模型(600)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給一個Y.串,每次操作可以交換相鄰的兩個字符,問在操作若干次([0,k])([0, k])([0,k])后,字符串中連續的Y最多是多少
思路 :
- 設定a數組表示原字符串中每個y出現的下標,從左到右
- 設定b數組為b[i]=a[i]?ib[i] = a[i] - ib[i]=a[i]?i,b數組代表將字符串中所有的y全部按順序交換到原字符串的前面,形成一段完整的y字符串,每個原字符串中的y需要交換的次數
- 那么題意就變換為 :(1)(1)(1)每次操作可以對b數組某個元素+1或者-1,最多k次操作,問b數組中最多有幾個相同的元素
- 由于這個答案有單調函數性質monotonicitymonotonicitymonotonicity,我們可以使用二分
- 考慮下列猜想 :(2)(2)(2)每次操作可以對b數組某個元素+1或者-1,最多k次操作,是否可以得到b數組中k個相同的元素?
- (2)(2)(2),可以轉換為我們需要多少次操作才可以使得所有的bi,bi+1,...,bi+m?1b_i, b_{i+1},...,b_{i+m-1}bi?,bi+1?,...,bi+m?1?相等,如果這個操作數小于等于k,說明這一段可以,根據這個來更新二分區間
- 也就是說,找到下列柿子的最小值(其中x是變成的相同元素) :(3)(3)(3) f(x)=∑k=ii+m?1∣Bk?x∣f(x) = \sum_{k=i}^{i+m-1} |B_k - x| f(x)=k=i∑i+m?1?∣Bk??x∣
- 這樣就變成了一個經典模型 - 貨倉選址,結論是當x取Bi+?m2?B_{i+ \lfloor \frac{m}{2} \rfloor}Bi+?2m???時,f(x)f(x)f(x)取得最小值
總結
以上是生活随笔為你收集整理的Longest Y 字符串,货仓选址模型(600)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Graph Destruction 并查
- 下一篇: Make Even(800)