FZU2286 RPG (思维)

题目链接

http://acm.fzu.edu.cn/problem.php?pid=2286

题目

Simon最近迷上了一款RPG游戏,现在他要从坐标(0,0)沿着y轴跑到坐标(0,100),他每秒能跑1个单位长度。

可是沿途的怪物可不会让他这么容易的就跑到,怪物会选择最优路径进行拦截,而且每个怪物跑的都比Simon快。

当怪物和Simon在同一坐标的时候,就会爆发战斗。但是Simon强,无敌,战斗一开始就可以把怪物秒了(也就是说,战斗是不消耗时间的)。

现在Simon想知道跑到目的地前他要和几只怪物战斗。(在目的地爆发的战斗也要计算在内)

Input
题目包含多组测试数据,每组测试数据第一行包含一个正整数n,表示怪物个数。

接下来n行,每行三个整数x,y,v,表示怪物当前的坐标和移动速度(单位长度/秒)。

n≤10^5,-1000<=x<=1000,-1000<=y<=1000,1<=v<=1000

Output
输出一个整数,表示战斗场数

Sample Input
3
0 0 5
0 200 1
0 201 1
Sample Output
2

分析

让每一个怪物在终点等Simon即可。

AC代码

#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
#define eps 0.0000000001
const int maxn=1e5+100;
double dis(double x,double y)
{
    return sqrt((y-100)*(y-100)+x*x);
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int ans=0;
        double x,y,v;
        for(int i=0;i<n;i++)
        {
            scanf("%lf%lf%lf",&x,&y,&v);
            double t=dis(x,y)/v;
            if(t<100) ans++;
            else if(fabs(t-100)<=eps) ans++;
        }
        printf("%d\n",ans);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37685156/article/details/80550403
RPG