BZOJ 1193 馬步距離

2022-07-22 06:27:13 字數 1056 閱讀 6991

time limit: 10 sec  memory limit: 162 mb

submit: 2267  solved: 1026

[submit][status][discuss]

在西洋棋和中國象棋中,馬的移動規則相同,都是走「日」字,我們將這種移動方式稱為馬步移動。如圖所示,

從標號為 0 的點出發,可以經過一步馬步移動達到標號為 1 的點,經過兩步馬步移動達到標號為 2 的點。任給

平面上的兩點 p 和 s ,它們的座標分別為 (xp,yp) 和 (xs,ys) ,其中,xp,yp,xs,ys 均為整數。從 (xp,yp) 

出發經過一步馬步移動可以達到 (xp+1,yp+2)、(xp+2,yp+1)、(xp+1,yp-2)、(xp+2,yp-1)、(xp-1,yp+2)、(xp-2,

yp+1)、(xp-1,yp-2)、(xp-2,yp-1)。假設棋盤充分大,並且座標可以為負數。現在請你求出從點 p 到點 s 至少

需要經過多少次馬步移動?

只包含4個整數,它們彼此用空格隔開,分別為xp,yp,xs,ys。並且它們的都小於10000000。

含乙個整數,表示從點p到點s至少需要經過的馬步移動次數。

1 2 7 9

5這道題和camp上的knight

何其相似啊,唯一的區別在與這裡是從乙個點到另乙個點,所以兩個點相減就可以變成從(0,0)到任意點了

1 #include 2 #include 3 #include 4 #include5 #include6 #include7

using

namespace

std;

8 typedef long

long

ll;9

10ll fun(ll x, ll y)

15if (x == 2 && y == 2

) 18 ll delta = x -y;

19if (y>delta)

22else25}

2627

intmain()

28

view code

BZOJ 1193 馬步距離(貪心 亂搞)

題意 給出平面上兩個位置a和b。每次跳馬步就是日字,從a到b最少要多少步?思路 若ab之間的距離小於等於10則直接爆搜。否則,a每次向b方向移動。這裡,若a移動某兩個方向後與b的距離相等,不妨設xy方向的距離分別為detx,dety,即detx dety相等,那麼接著比較abs detx dety ...

bzoj1193 HNOI2006 馬步距離

在西洋棋和中國象棋中,馬的移動規則相同,都是走 日 字,我們將這種移動方式稱為馬步移動。如圖所示,從標號為 0 的點出發,可以經過一步馬步移動達到標號為 1 的點,經過兩步馬步移動達到標號為 2 的點。任給平面上的兩點 p 和 s 它們的座標分別為 xp,yp 和 xs,ys 其中,xp,yp,xs...

P2060 HNOI2006 馬步距離

一道神奇的bfs 1.bfs dfs 這次真的不是我懶,我也不知道dfs怎麼寫.2.stl中的set或者map.資料範圍非常大,直接bfs肯定是一片黑色 指tle,mle 直接貪心又有可能會出一些莫名其妙的問題,所以,大範圍貪心,小範圍bfs的思路就出現了 不要問我是怎麼出現的 如這樣一張圖,要從紅...