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