博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysterious Antiques in Sackler Museum(判断长方形)
阅读量:7120 次
发布时间:2019-06-28

本文共 1559 字,大约阅读时间需要 5 分钟。

  • 参考博客

题意:大概意思就是判断四个矩形能不能从中选取三个矩形组成一个大的矩形。

题解:

  • 从四个矩形中任选三个,这样有四种选法。
  • 三个矩形能凑成一个矩形首先是两个矩形有一条边相等,第三个矩形要么有边跟他们相等的边相等,要么有边跟他们不相等的边的和相等(有点绕)。

想明白这两点之后直接暴力就可以了,当时训练赛的时候因为读错题然后一直WA烦躁一直没法静下心来想,修养不够,修养不够。

#include 
#include
#include
#include
#include
using namespace std;struct node{ int a,b;}s[5],tmp;node judge(node a,node b)/*这里返回结构体,这样可以减少好多代码,相当于两个矩形构成了一个新的矩形*/{ if(a.a==b.a) return (node){a.a,a.b+b.b}; if(a.b==b.a) return (node){a.b,a.a+b.b}; if(a.a==b.b) return (node){a.a,a.b+b.a}; if(a.b==b.b) return (node){a.b,a.a+b.a}; return (node){0,0};}int pd(node a,node b,node c){ tmp = judge(a,b); tmp = judge(tmp,c); if(tmp.a>0) return 1; tmp = judge(a,c); tmp = judge(tmp,b); if(tmp.a>0) return 1; tmp = judge(b,c); tmp = judge(tmp,a); if(tmp.a>0) return 1; return 0;}int main(){ int t,i; scanf("%d",&t); while(t--) { for(i=0;i<4;i++) scanf("%d%d",&s[i].a,&s[i].b); if(pd(s[0],s[1],s[2])) { printf("Yes\n"); continue; } if(pd(s[0],s[1],s[3])) { printf("Yes\n"); continue; } if(pd(s[0],s[2],s[3])) { printf("Yes\n"); continue; } if(pd(s[1],s[2],s[3])) { printf("Yes\n"); continue; } printf("No\n"); } return 0;}

转载于:https://www.cnblogs.com/luoxiaoyi/p/9935777.html

你可能感兴趣的文章
js处理url中文问题
查看>>
【翻译】在backtrack5上用Evilgrade工具15步**windows
查看>>
解析淘宝商城缘何更名“天猫”
查看>>
Struts2之checkboxlist 设置默认值和结果回显
查看>>
Spring 事务 状态信息的创建、回滚、清理、提交
查看>>
0927_C/C++笔试题_10:16道c语言面试例子【2】
查看>>
IIS Express 启用目录浏览
查看>>
当才华还配不上野心,就静下来学习
查看>>
编写高效的C++程序方法之使用对象池
查看>>
MFC子窗口和父窗口(SetParent,SetOwner)
查看>>
QT5(一):HelloWord
查看>>
Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)
查看>>
JAVASE总复习
查看>>
windows应用迁移到linux下
查看>>
linux网卡研究
查看>>
考虑用静态工厂方法代替构造器
查看>>
常见排序算法:冒泡排序
查看>>
我的友情链接
查看>>
使用ZooKeeper
查看>>
Jenkins+git 实现代码自动发布
查看>>