题目大意是给定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. 数组和字符串长度length

    数组.length 字符串.length() list list.size();map map.size();set set.size();1 java中的length属性是针对数组说的,比如说你声明 ...

  2. anaconda安装python三方包,以tensorflow为例

    Anaconda概述 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存.切 ...

  3. RDA 搜台

    转载马斯特·李 流程: 将channel的读写回调在AL_FW_Init中注册 初始化datasaving部件,注册datasaving的回调,并建立DATASAVING_NvmStore_Threa ...

  4. D. Toy Sum(cf)

    http://codeforces.com/problemset/problem/405/D 题意:已知集合S={1,2,3......1000000},s=1000000,从集合S中选择n个数,X= ...

  5. [Swift通天遁地]二、表格表单-(14)实时调整表单元素的激活和失效

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. switchhosts+fiddler app抓包

    1.先去switchhosts和fiddler官网下载并安装 2.打开switchhosts,添加要切换的环境(ip地址) 3.打开fiddler,一定要能抓https包 4.查找本地IP地址,cmd ...

  7. Akka源码分析-local-DeathWatch

    生命周期监控,也就是死亡监控,是akka编程中常用的机制.比如我们有了某个actor的ActorRef之后,希望在该actor死亡之后收到响应的消息,此时我们就可以使用watch函数达到这一目的. c ...

  8. 高德,百度,Google地图定位偏移以及坐标系转换

    一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系 一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的 ...

  9. 像素缓冲区对象PBO 记录

    像素缓冲区对象PBO 记录 和所有的缓冲区对象一样,它们都存储在GPU内存中,我们可以访问和填充PBO,方法和其他的缓冲区一样. 当一个PBO被绑定到GL_PIXEL_PACK_BUFFER,任何读取 ...

  10. cmd bat 相对命令

    "%~dp0",在BAT中,是不是“相对路径”的意思 (2013-08-21 12:19:32) 转载▼ 标签: 杂谈 分类: C# 0念 零 ,代表你的批处理本身. d p是FO ...