题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12885&courseid=274
解题报告:一共有n个发射装置,有一个接收装置,接收装置能够正确接收并把接收到的信号准确的译码出来的条件是:
Ti > 6 * (B +(T1 + T2 + .... Ti-1 + Ti+1.....Tn))
然后Ti = si / (Pi - p)
si是信号强度
pi - p的意思是发射器跟接收器之间的直线距离的平方
暴力模拟就行了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<cmath>
using namespace std;
#define maxn 100005
struct node
{
int si,x,y;
double t;
}que[maxn];
int main()
{
int T,n,B,x,y;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
scanf("%d%d%d",&B,&x,&y);
double tot = ;
for(int i = ;i <= n;++i)
{
scanf("%d%d%d",&que[i].x,&que[i].y,&que[i].si);
que[i].t = 1.0 * que[i].si / ((que[i].x - x)*(que[i].x - x) + (que[i].y - y) * (que[i].y - y));
tot += que[i].t;
}
int l = ;
for(int i = ;i <= n;++i)
{
double temp = * (B + tot - que[i].t);
if(que[i].t > temp)
{
l = i;
break;
}
}
printf(l? "%d\n":"NOISE\n",l);
}
return ;
}