我本来敲代码,敲着敲着忽然发现感觉我写的有问题,然后继续写完提交就ac了。 但是吧我用的直接排序没有考虑横纵坐标的对应关系,我随便就找到一组我的代码不成立的测试样例。
#include<iostream>
#include<algorithm>
using namespace std;
double x[20005],y[20005],xmax=-100000,ymax=-100000,xmin=100000,ymin=100000;
double xi,yi;
int main()
{
int k;
cin>>k;
for(int i=1;i<=k;i++)
{ cin>>x[i]>>y[i];
xmax= max(xmax,x[i]);
xmin=min(xmin,x[i]);
ymax= max(ymax,y[i]);
ymin=min(ymin,y[i]);
}
xi=(xmax+xmin)/2.;
yi=(ymax+ymin)/2.;
sort(x+1,x+1+k);
sort(y+1,y+1+k);
for(int i=2,j = k-1;i<=k/2;i++,j--)
{
if((x[i]+x[j])/2==xi && (y[i]+y[j])/2==yi);
else
{cout<<"This is a dangerous situation!";
return 0;
}
}
if (k%2==0)
;
else
{
if(x[k/2+1]==xi && y[k/2+1]==yi)
;
else
{cout<<"This is a dangerous situation!";
return 0;}
}
printf("V.I.P. should stay at (%.1f,%.1f).",xi,yi);
return 0;
}
我将题目里的数据纵轴调换了下位置,画出来不对称,但是我的代码结果是这个点存在;我应该发现的是对的吧;感觉蛮兴奋的hhh貌似找到了bug。
8
1 10
3 6
6 4
6 2
3 -4
1 0
-2 -2
-2 8
//代码运行结果是V.I.P. should stay at (2.0,3.0).
6 4关于(2.0,3.0)的对称点应该是(-2,2),我的测试样例中没有这个点;
嘿嘿嘿,在洛谷发的第一个评论,结束,撒花,啦啦啦。