TOJ-1328 Dog & Gopher
Posted DGSX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TOJ-1328 Dog & Gopher相关的知识,希望对你有一定的参考价值。
Neither the dog nor the gopher is a math major; however, neither is entirely stupid. The gopher decides on a particular gopher hole and heads for that hole in a straight line at a fixed speed. The dog, which is very good at reading body language, anticipates which hole the gopher has chosen, and heads at double the speed of the gopher to the hole, where it intends to gobble up the gopher. If the dog reaches the hole first, the gopher gets gobbled; otherwise, the gopher escapes.
You have been retained by the gopher to select a hole through which it can escape, if such a hole exists.
The first line of input contains four floating point numbers: the (x,y) coordinates of the gopher followed by the (x,y) coordinates of the dog. Subsequent lines of input each contain two floating point numbers: the (x,y) coordinates of a gopher hole. All distances are in metres, to the nearest mm.
Your output should consist of a single line. If the gopher can escape the line should read "The gopher can escape through the hole at (x,y)." identifying the appropriate hole to the nearest mm. Otherwise the output line should read "The gopher cannot escape." If the gopher may escape through more than one hole, any one will do. If the gopher and dog reach the hole at the same time either answer may be given. There are not more than 1000 gopher holes and all coordinates are between -10000 and +10000.
Sample Input 1
1.000 1.000 2.000 2.000 1.500 1.500
Output for Sample Input 1
The gopher cannot escape.
Sample Input 2
2.000 2.000 1.000 1.000 1.500 1.500 2.500 2.500
Output for Sample Input 2
The gopher can escape through the hole at (2.500,2.500).
Source: Waterloo
Local Contest Sep. 25, 1999
这题不知道说什么好。。。对于gopher能逃走的洞,都输出了也AC,输出一个也AC,反正就是随便写。
#include <stdio.h> using namespace std; int main(){ double x1,y1,x2,y2; double x[1001],y[1001]; scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2); bool f = false; int i = 0; while(~scanf("%lf%lf",&x[i],&y[i])){ double g = (x1-x[i])*(x1-x[i])+(y1-y[i])*(y1-y[i]); double d = (x2-x[i])*(x2-x[i])+(y2-y[i])*(y2-y[i]); if(g*4>d) continue; else { f = true; printf("The gopher can escape through the hole at (%.3f,%.3f).\n",x[i],y[i]); break; } } if(!f) printf("The gopher cannot escape.\n"); return 0; }
以上是关于TOJ-1328 Dog & Gopher的主要内容,如果未能解决你的问题,请参考以下文章
Handwritten Parsers & Lexers in Go (Gopher Academy Blog)
SSRF漏洞理解进阶&SSRF+gopher打内网(redismysqlfastcgi)& SSRF相关基础概念