又名:虎鯨之路
在某個世界中,娃娃魚是一種很神奇的存在, 他除了可以依靠自身輸出攻擊人以外,還可以透過吃到別人遺留的增益氣息來得到更大的攻擊力。
已知娃娃魚可以吃到的增益有三種:霸霸的刀圈(10尺)、咩咩的碎星星(10尺)、以及喵喵的傳教之力(12尺)。
又知這個世界的所有增益氣息都會從中心往四周圓形擴散,但擴散超過一定距離就沒有增益效果了, 比如碎星星的範圍為10尺,我距離咩咩10尺可以吃到增益,10.00001尺就不行。
並且同一種類型的增益氣息不可疊加, 也就是說,吃到一個增益後,就算再站到第二個增益氣息上,也只能獲得一層的增益效果。
比如下圖,娃娃魚就能吃到所有增益。
這種站位也可以(因為同類型不能疊加,所以深藍的圈站一個就可以)
這種站位就不行(吃不到深藍的刀圈)
請你幫娃娃魚判斷,他當前位置能不能吃到所有增益氣息呢?
你只需要完成並上傳function就可以了。
#include <iostream>
#include <cmath>
/*
* 判斷娃娃魚是否能吃到所有增益。
* 8個傳入參數依序為:a, b, c, 霸霸位置, 咩咩位置, 喵喵位置, x, y.
* 若能吃到所有增益,回傳true;否則回傳false
*/
bool isValid(int, int, int, int[], int[], int[], int, int);
/*
* 4個參數分別為:第一個點的x, y座標、第二個點的x, y座標
* 回傳此二點的平面座標距離
*/
double distance(int, int, int, int);
/* your code will be placed at here */
int main()
{
int a, b, c, x, y;
int baba[20005]; // 霸霸
int mie[20005]; // 咩咩
int miao[20005]; // 喵喵
// input
std::cin >> a >> b >> c; // 霸咩喵數量
for(int i=0; i<a; ++i) // 霸霸位置
std::cin >> baba[2*i] >> baba[2*i+1];
for(int i=0; i<b; ++i) // 咩咩位置
std::cin >> mie[2*i] >> mie[2*i+1];
for(int i=0; i<c; ++i) // 喵喵位置
std::cin >> miao[2*i] >> miao[2*i+1];
std::cin >> x >> y; // 娃娃魚當前位置
// output
if(isValid(a,b,c,baba,mie,miao,x,y))
std::cout << "Good Place! =)";
else
std::cout << "Not that well... =(";
return 0;
}
第一行有三個int a, b, c,代表某次戰鬥中霸霸、咩咩跟喵喵的數量,保證0 ≤ a,b,c ≤ 10000。
接下來有三行:
第二行有2a個整數a1_x, a1_y, a2_x, a2_y...代表該次戰鬥中每個霸霸的x, y座標,0 ≤ x, y ≤ 10000。
第三四行跟第二行類似,分別有2b、2c個整數代表該場戰鬥中咩咩跟喵喵的位置。
最後一行有兩個數字x跟y,代表娃娃魚當前位置。
(其實你不需要處理輸入問題)
請幫娃娃魚判斷他是否能吃到所有增益。
如果娃娃魚能吃到滿增益,請輸出"Good Place! =)",
否則請輸出"Not that well... =("。
輸出後不需換行。
(其實你也不需要處理輸出問題)
1 2 1
0 5
10 7 15 -4
14 -5
7 3
Good Place! =)
NEOJ Problem 461
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 10 | |
2 | 1~2 | 20 | |
3 | 3~4 | 20 | |
4 | 5~6 | 20 | |
5 | 7~9 | 30 |