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 ...
随机推荐
- Linux 命令行技巧
这是一个linux常见命令的列表.那些有• 标记的条目,你可以直接拷贝到终端上而不需要任何修改,因此你最好开一个终端边读边剪切&拷贝.所有的命令已在Fedora和Ubuntu下做了测试 命令 ...
- spring mvc 拦截器
拦截器作用:可以用于用户操作的安全检查,如:登录.权限等 package com.tool; import java.util.List; import javax.servlet.http.Http ...
- Java的导入与导出Excel
使用Jakarta POI导入.导出Excel Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和 ...
- java实现的一个maven多模块项目自动生成工具
平时在做spring mvc web新项目时,都需要自己去搭建spring mvc的项目框架,包括基本pom 依赖引入,基本配置文件(web.xml,spring-mvc.xml,数据库配置文件等等) ...
- VS2010远程调试
1, A:调试机. B:远端被调试机. 2, 从A机的VS2010的安装目录里面,找到../Remote Debugger文件,复制到B机. 3, 启动B机上复制过来的目录下的msvsmon.exe ...
- TIMAC 学习笔记(二)
昨天大体上熟悉了TIMAC自带的CC2530的示范例程,今天先从演示抓包入手,分析四种不同的配置工程在空中传输的差异.随后,会按照扫描.组网.入网等MAC层接口函数入手,结合IEEE 802.15.4 ...
- Java中的数组排序
Java中的数组排序,一般是利用Arrays.sort(),这个方法是经过优化的快速排序.在Arrays种有多中形式的重载,在这里就不一一列举了. 数组排序的种类: 1.非降序排序, 非升序排序(就排 ...
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
1.数组基础 1.什么是数组: 同一类型数据的集合,就是一个容器. 2.数组的好处: 可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式: (一 ...
- xtraScrollableControl 滚动条随鼠标滚动
代码如下 // using System; using System.Windows.Forms; using DevExpress.XtraEditors; namespace WindowsFor ...
- Sublime Text 3 使用备注
去年开始为了正规化自己的日常编辑工作,在dw,editplus,notap++,st里做了个选择,最终决定改曾经的dw为st. 毕竟dw是上个世纪的东西了,体积比较臃肿了.所以,在这里记录关于st的使 ...