Wannafly挑战赛21A
2024-10-19 00:27:52
题目链接
题解
代码
#include <cstdio>
#include <cmath>
#define MAX 1000005
#define Pi 3.14159265
struct Point{
double x,y;
void input() {
scanf("%lf%lf",&x,&y);
}
void output() {
printf("%f %f\n", x,y);
}
}p[MAX],s[MAX];
Point XZ(Point* p) {
return (Point){sin(Pi/4.0)*p->x+sin(Pi/4.0)*p->y, sin(Pi/4.0)*p->x-sin(Pi/4.0)*p->y};
}
bool cmp1(Point* a, Point* b) {return a->x<b->x;}
bool cmp2(Point* a, Point* b) {return a->y>b->y;}
bool cmp3(Point* a, Point* b) {return a->y<b->y;}
bool cmp4(Point* a, Point* b) {return a->x>b->x;}
int main () {
int T, n;
scanf ("%d", &T);
while (T--){
scanf("%d",&n);
for (int i = 0; i < n; i += 1)
p[i].input();
for (int i = 0; i < n; i += 1)
s[i] = XZ(p+i);
Point *a,*b,*c,*d;
a=b=c=d=&p[0];
for (int i = 1; i < n; i += 1){
if (cmp1(p+i,a))a=p+i;
if (cmp2(p+i,b))b=p+i;
if (cmp3(p+i,c))c=p+i;
if (cmp4(p+i,d))d=p+i;
}
if (a==b||a==c||d==b||d==c){
printf("Yes\n");
continue;
}
a=b=c=d=&s[0];
for (int i = 1; i < n; i += 1){
if (cmp1(s+i,a))a=s+i;
if (cmp2(s+i,b))b=s+i;
if (cmp3(s+i,c))c=s+i;
if (cmp4(s+i,d))d=s+i;
}
if (a==b||a==c||d==b||d==c){
printf("Yes\n");
continue;
}
printf("No\n");
}
return 0;
}
最新文章
- iOS instancetype or id ?
- wf(三)
- Anysys Fluent安装教程
- 【oracle】初学jobs
- php 与 ajax 获取123的案例
- Linq 语法举例
- Linux2.6内核 -- 结构的初始化
- jenkins 杀死衍生进程
- selenium2(WebDriver) API
- [原]docker 操作记录
- java设计模式综合项目实战视频教程
- 【转载】SQL注入
- AngularJS学习篇(三)
- Flask —— 信号(5)
- [leetcode]75. Sort Colors三色排序
- ecplise导入工程出现乱码的解决方案
- kill -9 a postgres process
- cocos2d-x中CCEditbox导出到lua
- IOS后台文件上传
- VMware Workstation 8正式版下载+密钥序列号