在老電影「007之生死關頭」(live and let die)中有乙個情節,007被毒販抓到乙個鱷魚池中心的小島上,他用了一種極為大膽的方法逃脫 —— 直接踩著池子裡一系列鱷魚的大腦袋跳上岸去!(據說當年替身演員被最後一條鱷魚咬住了腳,幸好穿的是特別加厚的靴子才逃過一劫。)
設鱷魚池是長寬為100公尺的方形,中心座標為 (0, 0),且東北角座標為 (50, 50)。池心島是以 (0, 0) 為圓心、直徑15公尺的圓。給定池中分布的鱷魚的座標、以及007一次能跳躍的最大距離,你需要告訴他是否有可能逃出生天。
輸入格式:
首先第一行給出兩個正整數:鱷魚數量 n(≤100)和007一次能跳躍的最大距離 d。隨後 n 行,每行給出一條鱷魚的 (x,y) 座標。注意:不會有兩條鱷魚待在同乙個點上。
輸出格式:
如果007有可能逃脫,就在一行中輸出"yes",否則輸出"no"。
輸入樣例 1:
14 20
25 -15
-25 28
8 49
29 15
-35 -2
5 28
27 -29
-8 -28
-20 -35
-25 -20
-13 29
-30 15
-35 40
12 12
輸出樣例 1:
yes輸入樣例 2:
4 13
-12 12
12 12
-12 -12
12 -12
輸出樣例 2:
no作者
陳越單位
浙江大學
**長度限制
16 kb
時間限制
400 ms
記憶體限制
64 mb
題意如圖 :
把所有靠近島嶼的點為起點dfs
即可,當dfs
到某個點point[i]
,能跳出去的條件是
x+d>=50 || x-d<=-50 || y+d>=50 || y-d<=-50
,即越出邊界
預處理point[i]和point[j]兩兩點之間的距離
到mtx[i][j]
**如下
#define debug
#ifdef debug
#include
#include
"/home/majiao/mb.h"
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define maxn (256)
#define ll long long
#define inf (0x7f7f7f7f)
#define fori(lef, rig) for(int i=lef; i<=rig; i++)
#define forj(lef, rig) for(int j=lef; j<=rig; j++)
#define fork(lef, rig) for(int k=lef; k<=rig; k++)
#define qaq (0)
using
namespace std;
#ifdef debug
#define show(x...) \
do while (0)
#else
#define show(x...)
#endif
void
err(
)template
<
typename t,
typename..
. a>
void
err(t a, a.
.. x)
namespace fastio
void
print()
template
<
typename t,
typename..
. t2>
inline
void
read
(t &x, t2 &..
. oth)
while
(isdigit
(ch)
) x *
= f;
read
(oth...
);}template
<
typename t>
inline
void
put(t x)
if(x<0)
int num=0;
char ch[
128]
;while
(x) ch[
++num]
= x %10+
'0', x /=10
;while
(num)
putchar
(ch[num--])
;putchar
('\n');
}};// namespace fastio
using fastio::read;
using fastio::put;
int n, m, q, k;
struct node a[maxn]
;double mtx[maxn]
[maxn]
;inline
double
dist
(double x1,
double x2,
double y1,
double y2)
bool canout =
false
, vis[maxn]
;//判斷當前座標(x,y)是否可以跳出去
#define out(x, y) ((x+m>=50) || (x-m)<=-50 || ((y+m>=50) || (y-m)<=-50))
void
dfs(
int u)
for(
int i=
1; i<=n; i++)}
signed
main()
#endif
}for
(int i=
1; i<=n; i++
)//預處理任意兩點間的距離
for(
int j=
1; j<=n; j++
)for
(int i=
0; i<
int(start.
size()
)&&!canout; i++
)printf
("%s\n"
, canout ?
"yes"
:"no");
#ifdef debug
clock_t etime =
clock()
;printf
("rum time: %lf 秒\n",(
double
)(etime-stime)
/clocks_per_sec)
;#endif
return0;
}
PTA 7 11 關鍵活動 最短答案!
題目詳情 題目分析 特殊的輸入樣例 11141 2413 3245 3434 5146 6575 6728 3793 79106 410210 65611 4輸出樣例 213 44 106 118 39 310 6注意這裡面沒有6 7 圖中終點最早發生時間為21,而7這個終點最早發生時間為19,所以...