题目链接
我是演员来的,比赛时候发现了长度为6,9,8的边都是唯一的,那么就只要找到6,8相交的那个点,将图形平移到交点在原点处,然后根据另两个端点的象限进行分类讨论,结果WA了。。挂了两发后面也懒得写了=。=慢慢补吧。至今没想清楚坑点在哪里。赛后发现只要求一下叉积判断正负就可以了。。几何题好久没写是真的不太行QAQ。
#include <bits/stdc++.h>
using namespace std;
const double eps=1e-5;
struct Point{
double x,y;
}p[50];
double dist(Point a,Point b){
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int main(){
int t;cin>>t;
while(t--){
for(int i=0;i<20;i++){
cin>>p[i].x>>p[i].y;
}
for(int i=0;i<20;i++){
if(fabs(dist(p[i],p[(i+1)%20])-9)<=eps&&fabs(dist(p[(i+1)%20],p[(i+2)%20])-8)<=eps){
reverse(p,p+20);
break;
}
}
bool flag;
for(int i=0;i<20;i++){
if(fabs(dist(p[i],p[(i+1)%20])-9)<=eps){
Point a,b;
a.x=p[i].x-p[(i+1)%20].x;
a.y=p[i].y-p[(i+1)%20].y;
b.x=p[(i+2)%20].x-p[(i+1)%20].x;
b.y=p[(i+2)%20].y-p[(i+1)%20].y;
flag = a.x * b.y - a.y * b.x > 0;
}
}
puts(!flag?"left":"right");
}
return 0;
}