题目连接:https://nanti.jisuanke.com/t/15551
题目的意思是: 将行人的移动过程抽象为平移,有两个移动参数,抽象到XY轴也就代表一个点;
输入的前两个点是刚开始的点 后边两个点是平移之后的点;而移动的参数是移动后的X减去没移动的X,Y同理;
在所有的结果中保证有一半的结果相同即可.
贴上代码解释一下:(数据都用int 也可以过)
#include<stdio.h>
struct point{
long long x;
long long y;
long long x1;
long long y1;
}p[100100];
int main()
{
long long n,i,cont=0,x,y;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%lld%lld%lld%lld",&p[i].x,&p[i].y,&p[i].x1,&p[i].y1);
}
for(i=0;i<n;i++)
{
int temp1=(p[i].x1-p[i].x);
int cont1=(p[i].y1-p[i].y);
if(cont==0)
{
x=temp1;
y=cont1;
cont=1;
}
else
{
if(x==temp1 && y==cont1)
cont++;
else
cont--;
}
}
printf("%lld %lld\n",x,y);
return 0;
}
刚开始将所有的差值一一算出来,然后利用“众数”将所有的数据都比较一番;众数的求解方式参考连接:http://blog.youkuaiyun.com/passer__/article/details/72802946