ACWing 4217 機械人移動

2022-09-19 23:45:12 字數 2236 閱讀 7297

在乙個無限大的二維平面上有乙個機械人。

初始時,機械人位於點 (0,

0)'>(0,0)

(0,0)。

機械人可以執行四種行動指令:

給定乙個長度為 n

'>n

n 的指令序列,指令編號 1∼n

'>1∼n

1∼n,機械人將按順序依次執行序列中的每個行動指令。

我們希望機械人最終抵達目標地點 (a,

b)'>(a,b)

(a,b)。

為了達成這一目的,我們可能需要對指令序列進行修改。

每次修改可以選擇其中乙個指令,並將其替換為四種指令之一。

注意,只能對序列中的指令進行替換,不得隨意刪除指令或新增額外指令。

不妨設經過修改的指令中,編號最小的指令編號為 min

id'>minid

minid,編號最大的指令編號為 max

id'>maxid

maxid。

我們定義修改成本為 max

id−m

inid

+1'>maxid−minid+1

maxid−minid+1。

例如,將rrrrrrr修改為rlrrlrl,則編號為 2,5

,7'>2,5,7

2,5,7 的指令經過了修改,修改成本為 7−2

+1=6

'>7−2+1=6

7−2+1=6。

請你計算,為了使得機械人能夠最終抵達目標點 (a,

b)'>(a,b)

(a,b),所需花費的最小修改成本。

如果不需要對序列進行修改,則成本為 0

'>0

0。輸入格式

第一行包含整數 n

'>n

n。第二行包含乙個長度為 n

'>n

n 的字串,表示指令序列,字串中只包含udlr

第三行包含兩個整數 a,b

'>a,b

a,b,表示機械人的目標位置為 (a,

b)'>(a,b)

(a,b)。

輸出格式

輸出乙個整數,表示最小修改成本。

如果無論如何修改,機械人都無法抵達目標位置,則輸出 −

1'>−1

−1。資料範圍

前四個測試點滿足 1≤n

≤10'>1≤n≤10

1≤n≤10。

所有測試點滿足 1≤n

≤2×10

5'>1≤n≤2×105

1≤n≤2×105,−109

≤x,y

≤109'>−109≤x,y≤109

−109≤x,y≤109。

輸入樣例1:

5

ruruu

-2 3

輸出樣例1:
3
輸入樣例2:
4

rulr

1 1

輸出樣例2:
0
輸入樣例3:
3

uuu100 100

輸出樣例3:
-1
1

二分答案o(nlogn)

2列舉所有mid區間,字首和記錄除去mid區間的影響使得機械人到達,xi,yi;

3等價判斷xi,yi能否改至多mid次操作到達sx,sy;

4不難發現與哈密爾頓距離d有關,如果哈密爾頓距離大於mid無論證明改都不可能到達,同時還要滿足哈密爾頓距離與mid大小同奇偶,因為只要同奇偶,且哈密爾頓距離滿足要求,則可以利用對稱走法互相抵消;

5 #include6

using

namespace

std;

7const

int n=2e5+5;8

intsx[n],sy[n],n,tx,ty;910

int check(int i,int

j)11

19int

main()

2038

int l=0,r=n;

39while(l<=r)

4051}52

if(ok)r=mid-1;53

else l=mid+1;54

}55 cout5758

return0;

59 }

機械人的移動範圍

時間限制 1秒 空間限制 32768k 熱度指數 28122 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。...

AcWing 730 機械人跳躍問題

acwing 730.機械人跳躍問題 機械人正在玩乙個古老的基於dos的遊戲。遊戲中有n 1座建築 從0到n編號,從左到右排列。編號為0的建築高度為0個單位,編號為 i 的建築高度為h i 個單位。起初,機械人在編號為0的建築處。每一步,它跳到下乙個 右邊 建築。假設機械人在第k個建築,且它現在的能...

AcWing 730 機械人跳躍問題

原題鏈結 考察 二分 or 遞推 思路一 二分初始能量值,check函式檢查即可.要注意的是每次e都 e h,也就是 e 2 e h.2100000不管用什麼資料型別都會爆,因此必須考慮別的做法 此時思路有二 高精度,但是高精很慢,盡量避免高精 避開運算,在e一定滿足條件就return 1 可以發現...