Luogu P1170 兔八哥與獵人

2022-08-22 11:18:08 字數 1576 閱讀 3030

兔八哥躲藏在樹林旁邊的果園裡。果園有m × n棵樹,組成乙個m行n列的矩陣,水平或垂直相鄰的兩棵樹的距離為1。兔八哥在一棵果樹下。

獵人揹著獵槍走進了果園,他爬上一棵果樹,準備殺死兔八哥。

如果獵人與兔八哥之間沒有其它的果樹,獵人就可以看到兔八哥。

現己知獵人和兔八哥的位置,編寫程式判斷兔子所在的位置是否安全.

第一行為n,表示有n(n ≤ 100,000)組資料,每組資料的第一行為兩個正整數ax和ay,表示獵人的位置,第二行為兩個正整數bx和by,表示兔八哥的位置(1 ≤ ax, ay, bx, by ≤ 100,000,000)。

共有n行,每行為「yes」或「no」表示兔八哥的位置是否安全。

1

1 11 2

no
第一眼看這道題時,估計很多人與我也一樣認為只應判斷兔八哥周圍八個格(如下圖a與b,a與c的關係)是否存在獵人,然而事實並非如此!!!(你們想太少了) 

如圖,我們可以很直觀的看出其實若獵人在e、f,可憐的兔八哥a可謂在劫難逃,所以我們發現獵人的合理站位不侷限於兔八哥周圍八個格。

如圖,我們還能知道若獵人在d、g兩點兔八哥是安全的,所以我們便要拿這兩個點開刀(並與c、e做對比)。

我們假設兔八哥的座標是(0,0),則d為(2,2),c為(1,1);g為(-2,-4),e為(-1,-2)。

我們可以發現兔八哥要想成功躲避獵人,它與獵人橫座標之差的絕對值肯定和它與擋住他(它)們的那棵樹橫座標之差的絕對值呈倍數關係,縱座標亦然(句子有點長,請自行理解)。所以兔八哥要想躲避獵人的攻擊,它與獵人橫縱座標之差的絕對值必須同時是乙個大於1的整數的倍數,所以它們的最大公約數非1,意思是它們不互質(輸出yes)。所以獵人要想殺死兔八哥,自然要將它們互質(輸出no)。

完畢!——————分割不完全的分割線——————

以下是pascal**:

var

n,m,i,j,k,x1,y1,x2,y2:longint;

function go(x,y:longint):longint;//求最大公約數(輾轉相除法)

begin

if y=0

then

exit(x)

else

go:=go(y,x mod

y);end

;begin

readln(n);//讀入資料組數

for m:=1

to n do

begin

readln(x1,y1);//讀入獵人的座標

readln(x2,y2);//讀入兔八哥的座標

if go(abs(x1-x2),abs(y1-y2))=1

then//判斷是否互質(最大公約數為1)

writeln('no

')else

writeln(

'yes');

end;end.

寒假1 17號總結

有好幾天沒寫總結了,原因主要是題改不完想著明天寫總結,然而到了明天又忘了寫,只能退到後天。明日復明日,明日何其多!以後寫總結必須當天寫完,今日事今日畢。我先總結一下前幾天吧。前幾天做題完全不在狀態,總是開小差,每天的題有時連暴力分都拿不齊,改題也比較拖拉,一點都不認真,晚上一看到後面的人在腐敗我的心...

11 7多校聯考

t1 為了避免晚上種種事情導致寫不成題解就先把t1寫了,畢竟也是很值得寫的。我這道題憑著乙個半感性半理性的想法意外的水到了80分 真的是很考人品啊 學競賽啊,墜重要的就是人品!先看正解 我們可以這樣化 t s bk1 i1 a b k2 i 2 a bk3 i3 a b k4 再化簡一下 t s b...

11 7學習心得

今天上午主要學習了css居中對齊的方式和css3的邊框與動畫製作。最後的實踐階段,我們還稍微引入了一點js的內容。css的劇種對齊主要講了margin,position,float,padding,line height和 絕對定位與transform調整水平居中 這幾種垂直居中與水平居中都有各自的...