题目大意是给定6个数对,每个数对代表一个面的长和宽,判断这6个面是否能构成一个长方体。

这种题一看很复杂,但是只要不想多了实际上这就是一个水题。。。

首先说明一下判断的思路:

  1.长方体是有三个对面的,所以先把这三个对面找出来(因为输入的长和宽是不确定的,所以先把每一组输入的两个数按照从大到小进行调整(这里建议开一个结构体数组))。调整完之后,自己写一个cmp的函数用来sort,cmp是先比较长(按照升序或者降序是无所谓的,随你)然后如果长相等那么就比较宽(按照和长一样的顺序比较)。

  2.你以为这样就完了,那么你就错了,不信你试试马上一个WA,我就是这样,其实还漏了一个条件。比如这组测试数据:         

3 3
3 3
3 2
3 2
2 2
2 2

按照第一个条件进行输出会输出POSSIBLE实际上它是IMPOSSIBLE.为什么?因为长方体的不一样长的边数一定是4的倍数,不是的话一定不行,像这一组数据,6个3 6个2一看就不对,所以我们要加上第二个条件,对每一组的输入的长和宽进行计数(这里我是开了一个bk数组,因为是1e4的数据大小所以完全可以开的出来,然后开一个计数数组记录不同的长和宽,然后直接从计数的数组进行循环比较每一个bk[jishu[i]]%4就行了)

2018/10/28 居然有人看我的题解并且hack了,是的我原来的程序对于这组样例

1 1

1 1

2 2

2 2

3 3

3 3

是不对的,hack成功!!!

至于更改我直接加了一个recheck函数进行recheck一下如果两个对面是正方形且边长又不相等,那么肯定是impossible,之前的uva的数据里面没有这组数据所以我也没有注意这个情况

我的代码:

 #include <bits/stdc++.h>
//#include "fp.h"
using namespace std;
int bk[];
int c[];
struct node
{
int x,y;
}a[];
bool cmp(node aa,node b)
{
return aa.x==b.x?aa.y>b.y:aa.x>b.x;
}
bool check(int aa)
{
if(a[aa].x==a[aa+].x&&a[aa].y==a[aa+].y)
return true;
else
return false;
}
bool recheck(int aa)
{
if(a[aa].x==a[aa+].y&&a[aa+].x==a[aa+].y&&a[aa].x!=a[aa+].x)
return false;
else
return true;
}
main()
{
//fop();
while(cin>>a[].x>>a[].y>>a[].x>>a[].y>>a[].x>>a[].y>>a[].x>>a[].y>>a[].x>>a[].y>>a[].x>>a[].y)
{
memset(bk,,sizeof(bk));
int k=;
for(int i=;i<;i++)
{
bk[a[i].x]++;
bk[a[i].y]++;
if(bk[a[i].x]==)
c[k++]=a[i].x;
if(bk[a[i].y]==)
c[k++]=a[i].y;
}
int ff=;
for(int i=;i<k;i++)
if(bk[c[i]]%!=)
{
ff=;break;
}
for(int i=;i<;i++)
if(a[i].x<a[i].y)
{
int t;
t=a[i].x;
a[i].x=a[i].y;
a[i].y=t;
}
sort(a,a+,cmp);
int f=;
for(int i=;i<;i+=)
if(!check(i))
{
f=;
break;
}
int fff=recheck()?:;
printf("%s\n",(f&&ff&&fff)?"POSSIBLE":"IMPOSSIBLE");
}
}

  

  

uva 1587(Box UVA - 1587)的更多相关文章

  1. UVA 12293 - Box Game(博弈)

    UVA 12293 - Box Game 题目链接 题意:两个盒子,一開始一个盒子有n个球.一个仅仅有1个球,每次把球少的盒子中球消掉,把多的拿一些球给这个盒子.最后不能操作的输(球不能少于1个),A ...

  2. CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu?

    CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu? Description (原题来自刘汝佳<训练指南>Pa ...

  3. Box UVA - 1587

    Ivan works at a factory that produces heavy machinery. He has a simple job - he knocks up wooden box ...

  4. UVa 1587 Box

    题意:给出6个矩形的长和宽,问是否能够构成一个长方体 先假设一个例子 2 3 3 4 2 3 3 4 4 2 4 2 排序后 2 3 2 3 3 4 3 4 4 2 4 2 如果要构成一个长方体的话, ...

  5. 【每日一题】 UVA - 1587 Box 二维有点偏序的感觉

    一开始用set存xjb分类讨论,然后wa, 然后简化了一点,改用vector,然wa 最后又发现没有初始化,然wa wa了一个半小时 最后看了题解orz 然后找了一组样例把自己的代码改对了 /* 1 ...

  6. 专题复习--背包问题+例题(HDU 2602 、POJ 2063、 POJ 1787、 UVA 674 、UVA 147)

    *注 虽然没什么人看我的博客但我还是要认认真真写给自己看 背包问题应用场景给定 n 种物品和一个背包.物品 i 的重量是 w i ,其价值为 v i ,背包的容量为C.应该如何选择装入背包中的物品,使 ...

  7. 位运算基础(Uva 1590,Uva 509题解)

    逻辑运算 规则 符号 与 只有1 and 1 = 1,其他均为0 & 或 只有0 or 0 = 0,其他均为1 | 非 也就是取反 ~ 异或 相异为1相同为0 ^ 同或 相同为1相异为0,c中 ...

  8. uva 10048 Audiophobia UVA - 10048

    题目简介 一个无向正权图,求任意两个节点之间的路径里最短的路径长度. 直接Floyd解决,就是注意要把Floyd的DP式子改一下成 G[i][j]=min(G[i][j],max(G[i][k],G[ ...

  9. uva 227 Puzzle (UVA - 227)

    感慨 这个题实在是一个大水题(虽然说是世界决赛真题),但是它给出的输入输出数据,标示着老子世界决赛真题虽然题目很水但是数据就能卡死你...一直pe pe直到今天上午AC...无比感慨...就是因为最后 ...

随机推荐

  1. 百度开放云java+tomcat部署web项目-小皇帝詹姆斯

    加入部署 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  2. Codeforces Round #250 (Div. 2)B. The Child and Set 暴力

    B. The Child and Set   At the children's day, the child came to Picks's house, and messed his house ...

  3. 批量ssh执行命令

    [root@openfire1 script]# cat test.sh  #!/bin/bash   #本地通过ssh执行远程服务器的脚本   for ip in `cat iplist`  do ...

  4. 360p以上

    请选择200MB以内,360p以上,时长3秒到300秒的文件.(支持格式:mp4.3gp.avi.mov.m4v.mkv文件)

  5. Uva 10036 - Divisibility

    Consider an arbitrary sequence of integers. One can place + or - operators between integers in the s ...

  6. Android 触摸提示音【转】

    本文转载自:http://blog.csdn.net/Jin_HeZai/article/details/46791567 近期任务,涉及Android触摸提示音. 首先,定位源码目标.很显然的,在原 ...

  7. @注解与普通web.xml的关系

    @WebServlet(name = "SimpleServlet" ,urlPatterns = {"/simple"}) public class Simp ...

  8. NodeJs函数式编程

    虽然标题是NodeJS函数式编程,但实际上NodeJS 是一个框架,不是一种语言,其采用的语言是 JavaScript.而JavaScript是一种典型的多范式编程语言,算不上是函数式语言,但它有函数 ...

  9. Mechanize抓取数据【Ruby】

    创建: 2017/08/05 更新: 2018/01/08 修正: ele_inner_text -> ele.inner_text                           补充: ...

  10. 关于CSS中float的两点心得以及清除浮动的总结

    对一个元素运用float后,该元素将脱离正常文档流,这意味着: 1. 运用float后,该元素不再影响父元素的高度,如果一个元素的所有子元素都是float的话,那么该元素的高度是0,这样后面元素渲染的 ...