题目 可以看这两位大佬的题解研究一下 连接 连接 题意: 有一个各边都平行于坐标轴的矩形(不知道大小),给定两个k边形,判断能否由这两个k边形组成这个矩形。这两个k边形可能在原始位置的基础上进行了平移、旋转90度、180度、270度,或者镜像翻转。 思路: 找规律。 1.矩形切开有5种情况,不满足这五种情况的寄。 2.满足5种情况的前提下,观察发现,每个k边形需要满足有恰好k-2个直角。另:如果切开成两个矩形要特判,因为各自4个直角。 3.需要满足两个k边形至多有一条边不平行于坐标轴。 4.两个k边形至少保证有一条边相等,不然无法拼接。 5.判断以上4点基本足够,但是有一种特殊情况,当切割成两个直角梯形时要注意判断是否直角腰对应相等。 时间复杂度: O(input) 代码:
#include
using namespace std;
#define fir(i,a,b) for(int i=a;ia[i].y;
cin>>m; for(int i=0;i>b[i].x>>b[i].y;
flag = 0;
if((n==4&&m==4)) flag = 1;
if((n==3&&m==3)) flag = 1;
if(((n==4&&m==3)||(n==3&&m==4))) flag = 1;
if(((n==5&&m==3)||(n==3&&m==5))) flag = 1;
check2(); //检查是否各有仅一条不平行于坐标轴的边且相等
if(flag)
{
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?