[agc012e]Camel and Oases
生活随笔
收集整理的這篇文章主要介紹了
[agc012e]Camel and Oases
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
很容易的就發現了只有log次跳躍。
然后狀壓DP。
似乎就是個簡單題吧(怎么比12c還簡單)
題意
一排點,兩點間有距離。
初始你有一個行走值v,如果相鄰兩點距離不超過v你可以自由在這兩點行走。
當v大于0時,你可以選擇某一時刻突然飛到任意點,這樣做后v會減半(下取整)。
問從每個位置初始出發能否到達所有位置。
DP
預處理left[i,j]表示在i行走值已經減半j次能往左走到哪,同理有right。
我們每次從i點出發,用行走值v可以走到[l,r]。
那么你需要將接下來的行走值分成兩部分然后覆蓋[1,l-1]和[r+1,n]。
我們希望預處理一個mi[i]表示用行走值中的一部分覆蓋[1,i],另一部分能覆蓋[x,n],x的最小值是多少。
然后為了這個先狀壓DP一下,設f[s]表示用s集合里的行走值覆蓋[1,x]最大的x是多少,每次可以枚舉一個不在s里的i然后轉移,用這個i去覆蓋接下來一段。
同理會有個g[s]表示覆蓋[x,n]。
于是接下來再枚舉拿哪些覆蓋前綴即可處理mi。
總結
以上是生活随笔為你收集整理的[agc012e]Camel and Oases的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读书感受 之《活着》
- 下一篇: ABAP 正则表达式(Regular E