在乙個無限大的二維平面上有乙個機械人。
初始時,機械人位於點 (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 的字串,表示指令序列,字串中只包含u
,d
,l
,r
。
第三行包含兩個整數 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 可以發現...