ACM水题 ,通不过哦

Description:Altynai是一个DOTA菜鸟,平常有空的时候会和室友联机打打电脑==现在他又在玩了..这次他选择了屠夫这个英雄..现在我们想象是在一个2维平面... Description:
Altynai是一个DOTA菜鸟,平常有空的时候会和室友联机打打电脑 = = 现在他又在玩了..这次他选择了屠夫这个英雄..
现在我们想象是在一个2维平面上,我们把每个英雄简化成一个点,屠夫能向每个方向发射出一个肉钩,当然这个钩子有一定的长度上限L.
当钩子在射出去的过程中碰到敌方英雄时,由于钩子的关系,敌方英雄就会被拉到屠夫身边,并且减少一定的生命值..当生命值<=0时,英雄就会死亡..
并且钩子产生的伤害和射出去的距离成正比,其中 伤害=伤害系数R*射出距离..
由于有视野的关系,所以现在Altynai知道敌方5个英雄的位置(英雄不会重合)和当前的生命值..
现在问题就来了,由于魔法值的限制..Altynai只用一次肉钩,但他很希望干掉对方的一个英雄,请你帮帮他,看看他的愿望能不能实现.

Input:
有多组数据,每组数据以两个整数X,Y开始.表示当前屠夫所在的位置.(-1000<=X,Y<=1000) 接下去5行,每行有3个整数x,y,hp(-1000<=x,y<=1000,100<=hp<=3000),表示每个敌方英雄所在的坐标和当前的生命值. 最后一行是1个整数L(1<=L<=1500)和1个实数R(1<=R<=5)
Output:
如果Altynai能干掉敌方一个英雄,输出"YES",否则"NO".
Sample Input:
0 0
1 1 500
2 3 600
-1 4 800
3 4 400
2 9 1000
300 1.0
Sample Output:
NO

下面是我编的,请高手改错
#include <iostream>
#include <cmath>
using namespace std;

int damage(int a[2],int b[5][3],int l,float r)
{
int i,j;
float d[5];
for(i=0;i<5;i++)
d[i]=sqrt((a[0]-b[i][0])*(a[0]-b[i][0])*1.0+(a[1]-b[i][1])*(a[1]-b[i][1]));
for(i=0;i<5;i++)
for(j=0;j<3;j++)
if(l>=d[i]&&r*d[i]>=b[i][2]) return 1;
return 0;
}

void main()
{
int a[2],b[5][3],L,i;
float R;
cin>>a[0]>>a[1];
for(i=0;i<5;i++)
cin>>b[i][0]>>b[i][1]>>b[i][2];
cin>>L>>R;
if(damage(a,b,L,R)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
展开
 我来答
慎樗诡默
2011-05-08
知道答主
回答量:7
采纳率:0%
帮助的人:3.4万
展开全部
#include <iostream>
#include <cmath>
using namespace std;

int damage(int a[2],int b[5][3],int l,float r)
{
int i;
float d[5];
for(i=0;i<5;i++)
d[i]=sqrt((a[0]-b[i][0])*(a[0]-b[i][0])*1.0+(a[1]-b[i][1])*(a[1]-b[i][1]));
for(i=0;i<5;i++)
if(l>=d[i]&&r*d[i]>=b[i][2]) return 1;
return 0;
}

void main()
{
int a[2],b[5][3],L,i;
float R;
cin>>a[0]>>a[1];
for(i=0;i<5;i++)
cin>>b[i][0]>>b[i][1]>>b[i][2];
cin>>L>>R;
if(damage(a,b,L,R)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
这样就好了。
更多追问追答
追问
这个for(j=0;j<3;j++)确实是我忘删了,不过这并不是问题所在,我感觉好像是得把坐标,L,R的限制关系考虑进去
追答
没有考虑到屠夫在放钩子的时候,有可能他和某位英雄的距离和对他产生的伤害可以把他杀死,但是屠夫的钩子无法钩到他,也就是说在他们两个英雄的连线上至少一个英雄,这种情况没有讨论,所以应该讨论屠夫能否真正钩中所要钩中的英雄。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式