POJ 3792 Area of Polycubes(思维)
题意 : 其实我也说不太清楚题意,就是给你很多方块,每放一块方块,都要和前一块有一个面相接,如果不相接,就输出NO,并输出是第几个方块不相接的。如果满足每一个都和前边相接,那就判断所有没有与其他方块相接的面的个数。
思路 : 每输入一个就判断前一个的上下左右前后中距离为1的有没有这个点,如果没有就记录下位置,用于输出NO,如果有的话,就记录下来,然后减去两个面,因为两个方块相接,有两个面要被减去,ans先初始化为6*m,相当于先初始化为所有的面。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <set>
#include <algorithm> using namespace std ; //int dir[3][6] = {{-1,0,1,0,0,0},{0,-1,0,1,0,0},{0,0,0,0,-1,1}} ;
int dirx[] = {-,,,,,};
int diry[] = {,-,,,,};
int dirz[] = {,,,,-,}; struct node
{
int x,y,z ;
}temp1,temp2;
bool operator <(node a,node b)
{
if(a.x == b.x)
{
if(a.y == b.y)
{
return a.z < b.z ;
}
return a.y < b.y ;
}
return a.x < b.x ;
}
int main()
{
set<node>sett ;
int n ,m,cas = ;
scanf("%d",&n) ;
while(n--)
{
scanf("%d",&m) ;
int ans = m* ;
int flag = - ;
sett.clear() ;
scanf("%d,%d,%d",&temp1.x,&temp1.y,&temp1.z) ;
sett.insert(temp1) ;
for(int i = ; i <= m ; i++)
{
scanf("%d,%d,%d",&temp1.x,&temp1.y,&temp1.z) ;
if(flag == - && sett.find(temp1) != sett.end())
flag = i ;
if(flag == -)
{
int cnt = ;
for(int j = ; j < ; j++)
{
temp2.x = temp1.x+dirx[j] ;
temp2.y = temp1.y+diry[j] ;
temp2.z = temp1.z+dirz[j] ;
if(sett.find(temp2) != sett.end()) cnt++ ;
}
if(cnt) ans -= cnt* ;
else flag = i ;
sett.insert(temp1) ;
}
}
if(flag != -) printf("%d NO %d\n",cas++,flag) ;
else printf("%d %d\n",cas++,ans) ;
}
return ;
}
POJ 3792 Area of Polycubes(思维)的更多相关文章
- poj 3792 Area of Polycubes
http://poj.org/problem?id=3792 #include <cstdio> #include <cstring> #include <cmath&g ...
- poj 3792 Area of Polycubes (简单模拟)
题目 题意:在三维坐标系中,给定n个立方体的中心坐标,立方体的边长为1,按照输入顺序,后来输入的必须和之前输入的立方体有公共的边. 而且,不能和之前输入的立方体相同. 如果满足条件,输出表面积.如果不 ...
- poj 1654 Area 多边形面积
/* poj 1654 Area 多边形面积 题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> ...
- poj 1265 Area 面积+多边形内点数
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5861 Accepted: 2612 Description ...
- Area of Polycubes
http://poj.org/problem?id=3792 题意:给出n个小正方体的中心坐标,求构成的多重小立方体的表面积.要求输入的下一个小正方体必须与之前的正方体有一个面是相交的.如果不满足条件 ...
- poj 1265 Area (Pick定理+求面积)
链接:http://poj.org/problem?id=1265 Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- poj 1654 Area (多边形求面积)
链接:http://poj.org/problem?id=1654 Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- poj 1265 Area( pick 定理 )
题目:http://poj.org/problem?id=1265 题意:已知机器人行走步数及每一步的坐标 变化量 ,求机器人所走路径围成的多边形的面积.多边形边上和内部的点的数量. 思路:1.以 ...
- poj 1654 Area(多边形面积)
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17456 Accepted: 4847 Description ...
随机推荐
- Bootstrap引用
<!--设置移动设置页面标准--> <meta name="viewport" content="width=device-width,i ...
- JqGrid 使用方法详解
JQGrid JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做什么事情. 下面 ...
- 如何让Eclipse的智能提示像VS一样霸气
说起来用 Eclipse 也有一段时间了,相信每一个用过的人都知道他的智能提示功能真的是糟糕透了,与 VisualStudio2008 简直不是一个档次的!我就纳闷了,他为什么不弄好一点呢!今天我实在 ...
- KindEditor配置步骤
KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome.Safari.Opera等主流浏览器. KindEditor ...
- [zz] 安装PostGIS(Linux篇)
0.安装PostgreSQL数据库 参考安装PostgreSQL数据库(Linux篇). 1.安装proj4 #tar zxvf proj-4.8.0.tar.gz#cd proj-4.8.0#./c ...
- [EAP]将hostapd作为radius服务器搭建EAP认证环境
文章主要由以下几部分组成: 0.概念理解: WPA/WPA2,EAP,IEEE, 802.11i, WiFi联盟, 802.1x 1.编译hostapd 2.配置hostapd的conf文件 3.外接 ...
- 在使用masm32 rc编译资源文件.rc出现的问题
fatal error RC1004: unexpected end of file found 很蛋疼.然来是.h宏定义文件中.最后一行加个回车键即可.否则就提示这错误.
- js设备判断
判断设备android,weixin,ios var UserAgent=navigator.userAgent.toLowerCase(); var IS_ANDROID=false; var IS ...
- Java数字格式化输出时前面补0
Java数字格式化输出时前面补0 星期日 2014年11月30日| 分类: Java /** * 里数字转字符串前面自动补0的实现. * */ public class TestString ...
- Setfocus - IE 需要使用setTimeout
setTimeout(function () { $('#controlid').focus(); }, 100); document.getElementById('filterPopupInput ...