大模拟题,按要求建立多边形,先定位斜边的位置,再分类讨论~

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct node {
double x,y;
}Node[][maxn];
double distance (node a,node b) {
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int isXiebian (node a,node b) {
if (a.x!=b.x&&a.y!=b.y) return ;
return ;
}
double angle (node a,node b) {
return fabs(a.x-b.x)/fabs(a.y-b.y);
}
vector<double> edge[];
int main () {
int T;
scanf ("%d",&T);
int k1,k2;
while (T--) {
edge[].clear();edge[].clear();
scanf ("%d",&k1);
for (int i=;i<k1;i++) scanf ("%lf %lf",&Node[][i].x,&Node[][i].y);
scanf ("%d",&k2);
for (int i=;i<k2;i++) scanf ("%lf %lf",&Node[][i].x,&Node[][i].y);
double xie1=,xie2=,cnt1=,cnt2=,angle1,angle2,p1,p2;
for (int i=;i<k1;i++) {
int j=i<k1-?i+:;
if (isXiebian(Node[][i],Node[][j])) xie1=distance(Node[][i],Node[][j]),cnt1++,
angle1=angle(Node[][i],Node[][j]);
edge[].push_back(distance(Node[][i],Node[][j]));
}
for (int i=;i<k2;i++) {
int j=i<k2-?i+:;
if (isXiebian(Node[][i],Node[][j])) xie2=distance(Node[][i],Node[][j]),cnt2++,
angle2=angle(Node[][i],Node[][j]);
edge[].push_back(distance(Node[][i],Node[][j]));
}
if (k1+k2>||k1+k2<) printf ("NO\n");
else if (xie1==xie2&&cnt1==&&cnt2==) {
if ((angle1==angle2||angle1*angle2==)&&(k1!=||k2!=)) printf ("YES\n");
else if (k1==&&k2==) {
double z1=p1<k1-?p1+:p1+-k1;
double z2=p2<k2-?p2+:p2+-k2;
double z3=p1<k1-?p1+:;
double z4=p1>?p1-:k1-;
double z5=p2<k2-?p2+:;
double z6=p2>?p2-:k2-;
if (edge[][z1]==edge[][z2]&&(edge[][z3]+edge[][z5]==edge[][z4]+edge[][z6]||
edge[][z3]+edge[][z6]==edge[][z4]+edge[][z5])) printf ("YES\n");
else printf ("NO\n");
}
else printf ("NO\n");
}
else if (xie1==&&xie2==&&k1==&&k2==) {
for (int i=;i<k1;i++) {
for (int k=;k<k2;k++)
if (edge[][i]==edge[][k]) cnt1++;
}
if (cnt1==||cnt1==) printf ("YES\n");
else printf ("NO\n");
}
else printf ("NO\n");
}
return ;
}

PAT T1011 Cut Rectangles的更多相关文章

  1. PAT 1132 Cut Integer

    1132 Cut Integer (20 分)   Cutting an integer means to cut a K digits lone integer Z into two integer ...

  2. PAT A1132 Cut Integer (20 分)——数学题

    Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...

  3. PAT 1132 Cut Integer[简单]

    1132 Cut Integer(20 分) Cutting an integer means to cut a K digits lone integer Z into two integers o ...

  4. pat 1132 Cut Integer(20 分)

    1132 Cut Integer(20 分) Cutting an integer means to cut a K digits lone integer Z into two integers o ...

  5. PAT (Advanced Level) Practice(更新中)

    Source: PAT (Advanced Level) Practice Reference: [1]胡凡,曾磊.算法笔记[M].机械工业出版社.2016.7 Outline: 基础数据结构: 线性 ...

  6. PAT_A1132#Cut Integer

    Source: PAT A1132 Cut Integer (20 分) Description: Cutting an integer means to cut a K digits lone in ...

  7. PAT 甲级 1132 Cut Integer

    https://pintia.cn/problem-sets/994805342720868352/problems/994805347145859072 Cutting an integer mea ...

  8. PAT甲级——A1132 Cut Integer

    Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...

  9. PAT Advanced 1132 Cut Integer (20) [数学问题-简单数学]

    题目 Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long ...

随机推荐

  1. python中字符串内置方法

    字符串类型 作用:定义姓名.性别等 定义方式: s='lzs' #\n换行 \t缩进4个空格 \r回退上一个打印结果,覆盖上一个打印结果 加上一个\让后面的\变得无意义 内置方法: (优先掌握) 1. ...

  2. 吴裕雄 python 机器学习——主成份分析PCA降维

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

  3. 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  4. Caffe 笔记 (一)caffe的层与数据结构

    Caffe是纯粹的C++/CUDA架构,支持命令行.Python和MATLAB接口:可以在CPU和GPU直接无缝切换: Caffe::set_mode(Caffe::GPU); Caffe的优势 1. ...

  5. C#中的注释

    帮助程序员便于阅读代码 单行注释 // 多行注释 /* * */ 文档注释 /// <summary> /// ... /// <summary>

  6. mysql 隔离性与隔离级别

    提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务.最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱. 转账过程具体到程序里会有一系列的操作,比如 ...

  7. Sunday算法浅谈

    一.Sunday算法简介 Sunday算法在我看来比起Kmp和bm都更加容易理解,代码实现也更加简洁.Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似只不过S ...

  8. HTML5 canvas自制画板

    找到一个画板的插件,很好用,点击下载  ,页面很简单,但是呢,貌似不适用于手机端,,,

  9. 连接(JOIN)

    join 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. INNER JOIN 从多个表中返回满足 JOIN 条件的所有行. INNER JOIN:如果表中有至少一个匹配,则返回行 L ...

  10. 消息队列(二)--- RocketMQ-NameServer阅读

    概述   所有broker在启动的时候都会向NameServer进行注册,对它进行发送心跳包. 源码阅读 我们先从 NamesrvStartup这个类分析 public static void mai ...