/*
题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!),
问是否可以还原出一个立方体的坐标,注意这一句话:
The numbers in the i-th output line must be a permutation of the numbers in i-th input line! 思路:
我们只要对输入的每一行数据进行枚举每一个排列, 然后检查时候能构成立方体就好了!
检查立方体:找到最小的边长的长度 l, 统计边长为l, sqrt(2)*l, sqrt(3)*l的边长
条数,如果恰好分别为12, 12, 4那么就是立方体了...
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; typedef long long LL; LL num[][], d[]; LL dis(int i, int j){
return (num[i][]-num[j][])*(num[i][]-num[j][]) +
(num[i][]-num[j][])*(num[i][]-num[j][]) +
(num[i][]-num[j][])*(num[i][]-num[j][]);
} void out(){
for(int i=; i<; ++i){
printf("%lld", num[i][]);
for(int j=; j<; ++j)
printf(" %lld", num[i][j]);
printf("\n");
}
} int vis[][]; bool check(){
int cnt=;
int cnt1=, cnt2=, cnt3=;
LL L=(1LL)<<;
memset(vis, , sizeof(vis));
for(int i=; i<; ++i)
for(int j=; j<; ++j)
if(i!=j && !vis[i][j] && !vis[j][i]){
d[cnt++]=dis(i, j);
vis[i][j]=vis[j][i]=;
if(L>d[cnt-])
L=d[cnt-];
}
if(L==) return false;
for(int i=; i<cnt; ++i)
if(d[i] == L) cnt1++;
else if(d[i] == *L) cnt2++;
else if(d[i] == *L) cnt3++;
if(cnt1== && cnt2== && cnt3==) return true;
return false;
} bool dfs(int cur){
if(cur>=) return false;
sort(num[cur], num[cur]+);//排序
do{
if(check()){
printf("YES\n");
out();
return true;
}
if(dfs(cur+)) return true;//得到当前的全排列之后,继续向下寻找
}while(next_permutation(num[cur], num[cur]+));//枚举这一个行的每一个全排列
return false;
} int main(){
for(int i=; i<; ++i)
for(int j=; j<; ++j)
scanf("%lld", &num[i][j]);
if(!dfs())
printf("NO\n");
return ;
}

codeforces Restore Cube(暴力枚举)的更多相关文章

  1. Array and Segments (Easy version) CodeForces - 1108E1 (暴力枚举)

    The only difference between easy and hard versions is a number of elements in the array. You are giv ...

  2. codeforces 466c(暴力枚举)

    题目链接 思路如下 *题意: 给定一个序列,问有多少种方案可以将此序列分割成3个序列元素和完全相同的子序列.(子序列不能为空).即问有多少个点对(i,j)满足a[1]+-+a[i-1]=a[i]+a[ ...

  3. Codeforces Round #349 (Div. 1) B. World Tour 最短路+暴力枚举

    题目链接: http://www.codeforces.com/contest/666/problem/B 题意: 给你n个城市,m条单向边,求通过最短路径访问四个不同的点能获得的最大距离,答案输出一 ...

  4. Codeforces Round #265 (Div. 2) D. Restore Cube 立方体判断

    http://codeforces.com/contest/465/problem/D 给定8个点坐标,对于每个点来说,可以随意交换x,y,z坐标的数值.问说8个点是否可以组成立方体. 暴力枚举即可, ...

  5. Codeforces Round #298 (Div. 2) B. Covered Path 物理题/暴力枚举

    B. Covered Path Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/probl ...

  6. Codeforces Round #265 (Div. 2) D. Restore Cube 立方体推断

    http://codeforces.com/contest/465/problem/D 给定8个点坐标.对于每一个点来说,能够任意交换x.y,z坐标的数值. 问说8个点能否够组成立方体. 暴力枚举就可 ...

  7. Codeforces 425A Sereja and Swaps(暴力枚举)

    题目链接:A. Sereja and Swaps 题意:给定一个序列,能够交换k次,问交换完后的子序列最大值的最大值是多少 思路:暴力枚举每一个区间,然后每一个区间[l,r]之内的值先存在优先队列内, ...

  8. CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution (暴力枚举)

    题意:求定 n 个数,求有多少对数满足,ai^bi = x. 析:暴力枚举就行,n的复杂度. 代码如下: #pragma comment(linker, "/STACK:1024000000 ...

  9. codeforces 464B Restore Cube

    题目链接 给8个点, 判断这8个点能否组成一个正方体, 如果能, 输出这8个点. 同一个点的x, y, z可以交换. 每一个点有6种排列方式, 一个8个点, 暴力枚举出所有排列方式然后判断能否组成正方 ...

随机推荐

  1. jquery parent和parents的区别

    从字面上不难看出parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合.parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选可以 ...

  2. GO語言視頻教程下載

    需要的朋友可以加QQ群195112,在群共享內可以下載到.

  3. 【转】使用Cocoapods创建私有podspec

    Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...

  4. [转]揭秘webdriver实现原理

    转自:http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html 通过研究selenium-webdriver的源码,笔者发现其实w ...

  5. Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  6. 【转帖】四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho

    四种BI 开源工具介绍-SpagoBI,openI,JasperSoft,Pentaho 1 BI系统的简述 从技术角度来说 BI 包含了 ETL.DW.OLAP.DM等多环节.简单的说就是把交易系统 ...

  7. WebApp开发之--"rem"单位(转)

    随着web app的兴起,rem这是个低调的css单位,近一两年开始崭露头角,有许多朋友对于它的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我认为rem是用来做web app它绝对是 ...

  8. 算法 - 求两个自然数的最小公倍数(C++)

    //************************************************************************************************** ...

  9. JAVA本地远程连接linux程序监控状态

    环境:  1.本地window 2.程序部署在centos   一,启动访问权限安全守护程序 新建文件:jstatd.all.policy ,注意路径 grant codebase "$JA ...

  10. linux epoll 开发指南-【ffrpc源码解析】

    摘要 关于epoll的问题很早就像写文章讲讲自己的看法,但是由于ffrpc一直没有完工,所以也就拖下来了.Epoll主要在服务器编程中使用,本文主要探讨服务器程序中epoll的使用技巧.Epoll一般 ...