uva 1587 盒子
来源:互联网 发布:化学结构 数据可视化 编辑:程序博客网 时间:2024/06/07 10:26
题意:给你六组数据,每组x,y代表长方形的长和宽,问这六个面能否组成一个长方体。
思路:
长方体的性质,一共有三组对面,两两相等,且只有三个有效数据,长、宽、高,每一个面分别为长宽、长高、宽高组成的面,利用这个性质可求解。
先将六组数据按x从小到大排序,如果x相等则按y从小到大排序。这样排序下来后,如果是长方体的话,一定有,1、2完全相同,3、4完全相同,5、6完全相同。
而且,由于已经完全从小到大排序(包括每一组数据的两个数),这样的话只可能产生四种情况能构成长方体。
1、前四组数据的x相等,他们所对应的y(由于如果满足长方体,则排序后必有1、2完全相同,3、4完全相同,所以他们对应的y其实是两个有效数据)分别为后两组数据的x和y。
2、前四组数据的y相等,他们所对应的x分别为后两组数据的x和y。
3、后四组数据的x相等,他们所对应的y分别为前两组数据的x和y。
4、后四组数据的y相等,他们所对应的x分别为前两组数据的x和y。
由上面可以看出,其实判断的部分可以封装为一个函数来写,只需要改变传递的参数就可以了。
#include<bits/stdc++.h>using namespace std;struct point{ int x,y;};point p[10];int cmp(point a,point b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x;}int check(int a,int b,int c,int d,int e,int f){ if(c>d) swap(c,d);//始终保持小数在前大数在后,方便比较。 if(a==b&&c==e&&d==f) return 1; return 0;}int main(){ int ans; while(cin>>p[0].x>>p[0].y) { if(p[0].x>p[0].y) swap(p[0].x,p[0].y); for(int i=1; i<6; i++) { cin>>p[i].x>>p[i].y; if(p[i].x>p[i].y) swap(p[i].x,p[i].y); } sort(p,p+6,cmp); ans=0; for(int i=0; i<6; i+=2) { if(p[i].x==p[i+1].x&&p[i].y==p[i+1].y) ans++; } if(ans==3) { if(check(p[0].x,p[2].x,p[0].y,p[2].y,p[4].x,p[4].y)||check(p[0].y,p[2].y,p[0].x,p[2].x,p[4].x,p[4].y) ||check(p[2].x,p[4].x,p[2].y,p[4].y,p[0].x,p[0].y)||check(p[2].y,p[4].y,p[2].x,p[4].x,p[0].x,p[0].y)) printf("POSSIBLE\n"); else printf("IMPOSSIBLE\n"); } else printf("IMPOSSIBLE\n"); } return 0;}
阅读全文
0 0
- 盒子(uva-1587)
- UVa 1587 盒子
- UVA-3.10-盒子-1587
- uva 1587 盒子
- 题解:盒子(UVa 1587)
- uva 12657 移动盒子
- UVa 591 Box(盒子)
- UVA 103 Stacking Boxes 堆砌盒子(DP)
- 盒子
- UVa Problem 10215 The Largest/Smallest Box... (最大/最小的盒子)
- UVa 103 Stacking Boxes 堆砌盒子(DP 最长条件子序列)
- 例题6-5 移动盒子 UVa 12657 链表(模拟链表)
- 例题6-5 UVA 12657 Boxes in a Line 移动盒子
- 紫书章六例题五 移动盒子 UVA 12657 (数组模拟双向链表)
- 例题6-5 移动盒子(Boxes in a Line, UVa 12657)
- 滑动盒子/弹性盒子
- UVa.1587
- UVA-1587
- jstl foreach 分行
- HTML中块级元素和行内元素
- javaee中针对xml的解析方式---DOM
- 关于MATLAB四连通与八连通的问题
- 2. Add Two Numbers
- uva 1587 盒子
- [FUNC]MouseIsOver
- react-navigation跨tab路由处理
- CSS选择器
- 热门工具推荐:
- Github入门
- VMware下,Hadoop集群的配置
- Allegro DRC 就当掉解决方法
- FZU2268 Cutting Game(数学,规律)(第七届福建省大学生程序设计竞赛)