隐藏的大水题啊!! the grid points.!!
在网格点上面找。。坑爹。。模拟退火了好久
直接枚举就好了
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct deng
{
double x,y,z,i;
};deng d[105];
double dis(int k,int b,int c)
{
return sqrt(double((d[k].x-b)*(d[k].x-b)+(d[k].y-c)*(d[k].y-c)+d[k].z*d[k].z));
}
int main()
{
int cas,n,i,j,k;
cin>>cas;
while(cas--)
{
cin>>n;
double maxe=0,e;
for(i=0;i<n;i++)
cin>>d[i].x>>d[i].y>>d[i].z>>d[i].i;
for(i=-100;i<=100;i++)
for(j=-100;j<=100;j++)
{
e=0;
for(k=0;k<n;k++)
{
double l=dis(k,i,j);
e+=1.0*d[k].z*d[k].i/l/l/l;
}
maxe=max(maxe,e);
}
printf("%.2lf\n",maxe);
}
return 0;
}