poj1022:Packing Unit 4D Cubes四维魔方的题意和题解

MPU6050 加速度计陀螺仪传感器与 Arduino 的接口 虽然该模型并不能准确代表现实世界中加速度计传感器的构建方式,但它通常有助于理解为什么加速度计的输出信号通常以 ±g 为单位指定,或者为什么加速度计在静止时在 z 轴上的读数为 1g,或者在不同方向上您可以期望得到什么样的加速度计读数。该模块的核心是低功耗、低成本的 6 轴运动跟踪芯片 MPU6050,它将 3 轴陀螺仪、3 轴加速度计数字运动处理器 (DMP) 集成到一个 4mm x 4mm 的微型芯片中。小时候,科学博览会上的陀螺仪总是让我们感到惊讶,因为它们以奇怪的方式移动,甚至似乎违背了重力。 阅读详情

囧,题意看起来 很复杂,故几乎没什么人提交,其实只要看懂了题目的意思再简单不过了,,,这不,因为英语不好花了很久才看懂题意,稍微解释一下吧:

定义一个四维的魔方,每个四维的魔方有八个面(类比3维的魔方有六个面),每个面是一个3维的东西(类比3维的魔方的每个面是2维的平面)。

然后要把n个四维的魔方包装起来,因为是四维的,所以有四根坐标轴,每个魔方给出9个数据,第一个是此魔方的标识,然后1,2个表示在沿着第一根轴的前面和后面的用胶水

粘贴起来的魔方的编号,没有便为0。然后要你计算这n个四维魔方组装成的EER的“体积”(体积是相对与四维而言的)。理解了题意就简单了,直接由3维的外推到4维,3维里怎

么做在四维里就怎么做。如:体积等于每个坐标轴的距离乘起来。反正按3维的思考方法来就是了。

然后有两个判断:1是如果x在y上面那y必在x下面,如不成立则不存在。

                        2是最后只能组装城一个产品,不是多个,dfs求连通分量即可

AC代码如下:(第一次以为魔方的标识符在1到n之间,其实不是,搞得re了几次)


# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# define get(x) (((x-1)&((1 << 31) - 2)+((x-1)&1)^1)+1)
# define DEBUG

int s[111][11];
int use[111];
int check[111];
int re[111];

int go(int x, int n) {
	for (int i = 1; i <= n; ++ i){
		if(re[i] == x) return i;
	}
}

int check1(int n) {
	for (int i = 1; i <= n; ++ i) {
		for (int j = 1; j <= 8; ++ j) {
			if (s[i][j] && s[go(s[i][j], n)][get(j)] != re[i]) return 1;
		}
	}
	return 0;
}

int dfs(int x, int n) {
	if(check[x]) return 0;
	check[x] = 1;
	for (int i = 1; i <= 8; ++ i) {
		if(s[x][i]) {
			int t = go(s[x][i], n);
			use[t] = 1;
			dfs(t,n);
		}
	}
	return 0;
}

int check2(int n, int x) {
	dfs(x,n);
	for (int i = 1; i <= n; ++ i) {
		if (!use[i]) return 1;
	}
	return 0;
}

int getAns(int n) {
	int x[5];
	memset(x, 0, sizeof(x));
	for (int i = 1; i <= n; ++ i) {
		for (int j = 1; j <= 8; ++ j) {
			if(s[i][j]) {
				++ x[(j + 1) >> 1];
			}
		}
	}
	int su = 1;
	for (int i = 1; i <= 4; ++ i) {
		su *= (x[i] >> 1) + 1;
	}
	printf ("%d\n", su);
	return 0;
}

int main () {
	int ts;
	for (scanf("%d", &ts); ts; -- ts) {
		int n;
		scanf("%d", &n);
		memset(s, 0, sizeof(s));
		memset(use, 0, sizeof(use));
		memset(check, 0, sizeof(check));
		memset(re, 0, sizeof(re));
		int t;
		for (int i = 1; i <= n; ++ i) {
			scanf("%d", &t);
			re[i] = t;
			s[i][0] = t;
			for (int j = 1; j <= 8; ++ j) {
				scanf("%d", &s[i][j]);
			}
		}
		//printf ("%d %d", check1(n), check2(n, t));
		if(check1(n) || check2(n, 1)) {
			printf ("Inconsistent\n");
		}
		else {
			getAns(n);
		}
	}



	return 0;
}



如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误 当我用CL_HTTP_CLIENT往一个外网的url发请求时,遇到错误:ICM_HTTP_SSL_PEER_CERT_UNTRUSTED 错误是从这段ABAP代码里抛出来的: CALL METHOD lo_http_client-&gt;get_last_error IMPORTING code = lv_sysubrc message = ev_error_message. "BREAK-... 阅读详情

相关推荐

4魔方模拟

一个三阶四维魔方出了三维的xyz轴之外还有一个内

POJ 1022 Packing Unit 4D Cubes题解报告|4D纸老虎】

题目链接 题目大意: 这个题不算难,关键就是题意不好懂。这里我不介绍背景,从输入数据入手分析题意。 1.第一行表示样例数目。每个样例的第一行整数n表示样例中含有的物体数目,其后n行描述n个物体。 2.描述一个物体用一行,一行包含9个整数。第一个表示该物体的编号(相当于名字)。剩下的8个数字2个一组,共四组。 3.每一组数字表示该物体在一个方向上的前后邻居情况。(如果一个物体是二维平面的,我们认为它有x,y两个坐标轴方向。如果物体是三维的,我们认为它有x,y,z三个方向。本题中物体是四位的,用x,y,z,k.

csyifanZhang的博客 427

四维魔方的java小程序

很好玩的四维魔方小程序,可以调整大小,方位等

poj1022

题目描述:有一个由n个四维的小立方体(四维的还能叫立方体?* v *)组成的产品(名字叫做EE3),小立方体之间互相用胶水粘在一起,现在需要一个程序判断EE3是否合格,如果合格计算EE3的体积(四维情况下还能叫体积么?@_@!!)。 EE3合格的条件:所有的小立方体都连通,并且任意两个相邻的小立方体只公用一个维度,且在该维度上互相在对方的相反方向上。 提醒:每一个小立方体都有8个面(因为四根坐标

SparkRat的家 1071

POJ 1022--Packing Unit 4D Cubes

poj1022

Hering_Linux的专栏 533

poj 1022 Packing Unit 4D Cubes

Packing Unit 4D Cubes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2281 Accepted: 758 Description We usually think that there are three geometri

mtxxxx的blog 1174

POJ1022_Packing Unit 4D Cubes_深搜

Packing Unit 4D Cubes Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2432   Accepted: 823 Description We usually think that there are three geometric

弱的奋斗之旅 746

poj 1022 Packing Unit 4D Cubes——dfs 搜索

转载于:(●’◡’●) Packing Unit 4D Cubes Description We usually think that there are three geometric dimensions; the fourth dimension is usually time. However, the Association for Customizing Machines (ACM) has to deal with four geometrical dimensions for their

five_east_west的博客 243

poj 1022 Packing Unit 4D Cubes 搜索

//poj 1022 //sep9 #include using namespace std; const int MAXN=128; const int MAX_INDEX=1024; int g[MAXN][MAXN][10]; int vis[MAXN],map[MAX_INDEX],minx[4],maxx[4],x[4]; int cases,n,cnt; void dfs(int

sepNINE的专栏 551

POJ 1022

Packing Unit 4D Cubes Time Limit:1000MS Memory Limit:10000K Total Submissions:2675 Accepted:943 Description We usually think that there are three geometric dimensions; the f...

一只菜鸟夹 452

POJ1022 四维魔方(转载他人)

Packing Unit 4D Cubes Description We usually think that there are three geometric dimensions; the fourth dimension is usually time. However, the Association for Customizing Machine

不忘初心 1658

四维魔方

  YouTube链接:http://www.youtube.com/watch?v=GgbcHZHEqSQ查看更多:http://www.superliminal.com/cube/cube.htm (含下载)

matrix67的专栏 990

poj1022 图的bfs

如题:http://poj.org/problem?id=1022   Packing Unit 4D Cubes Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1964   Accepted: 626 Description We usually

zht的专栏 695

OJ-POJ1022-DFS

这题就是一个四维在唬人,看一个两维的简化版: 给7个二维单位正方形。现在想把它们粘起来,然后放到一个大正方形容器上。 7 1 3 2 0 4 2 1 0 0 0 3 5 1 0 0 4 0 0 1 0 5 0 3 0 0  6 0 0 4 7 7 0 0 6 0 每行输入的格式是[ID][右边][左边][上边][下边] 将7个小块粘好,得到图形 分析过程如下: 1,判

zxwtry的博客 356

三星离线编程T-OLP,T-Studio,T-ELITE手册

三星离线编程T-OLP,T-Studio,T-ELITE手册

上一篇: 位运算专题
下一篇: poj1023:The Fun Number System有趣的进制系统
atupal
博客等级 码龄15年 125粉丝 163原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值