codeforces Restore Cube(暴力枚举)
1 /* 2 题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!), 3 问是否可以还原出一个立方体的坐标,注意这一句话: 4 The numbers in the i-th output line must be a permutation of the numbers in i-th input line! 5 6 思路: 7 我们只要对输入的每一行数据进行枚举每一个排列, 然后检查时候能构成立方体就好了! 8 检查立方体:找到最小的边长的长度 l, 统计边长为l, sqrt(2)*l, sqrt(3)*l的边长 9 条数,如果恰好分别为12, 12, 4那么就是立方体了... 10 */ 11 #include<iostream> 12 #include<cstdio> 13 #include<cstring> 14 #include<algorithm> 15 16 using namespace std; 17 18 typedef long long LL; 19 20 LL num[8][3], d[70]; 21 22 LL dis(int i, int j){ 23 return (num[i][0]-num[j][0])*(num[i][0]-num[j][0]) + 24 (num[i][1]-num[j][1])*(num[i][1]-num[j][1]) + 25 (num[i][2]-num[j][2])*(num[i][2]-num[j][2]); 26 } 27 28 29 void out(){ 30 for(int i=0; i<8; ++i){ 31 printf("%lld", num[i][0]); 32 for(int j=1; j<3; ++j) 33 printf(" %lld", num[i][j]); 34 printf("\n"); 35 } 36 } 37 38 int vis[8][8]; 39 40 bool check(){ 41 int cnt=0; 42 int cnt1=0, cnt2=0, cnt3=0; 43 LL L=(1LL)<<60; 44 memset(vis, 0, sizeof(vis)); 45 for(int i=0; i<8; ++i) 46 for(int j=0; j<8; ++j) 47 if(i!=j && !vis[i][j] && !vis[j][i]){ 48 d[cnt++]=dis(i, j); 49 vis[i][j]=vis[j][i]=1; 50 if(L>d[cnt-1]) 51 L=d[cnt-1]; 52 } 53 if(L==0) return false; 54 for(int i=0; i<cnt; ++i) 55 if(d[i] == L) cnt1++; 56 else if(d[i] == 2*L) cnt2++; 57 else if(d[i] == 3*L) cnt3++; 58 if(cnt1==12 && cnt2==12 && cnt3==4) return true; 59 return false; 60 } 61 62 bool dfs(int cur){ 63 if(cur>=8) return false; 64 sort(num[cur], num[cur]+3);//排序 65 do{ 66 if(check()){ 67 printf("YES\n"); 68 out(); 69 return true; 70 } 71 if(dfs(cur+1)) return true;//得到当前的全排列之后,继续向下寻找 72 }while(next_permutation(num[cur], num[cur]+3));//枚举这一个行的每一个全排列 73 return false; 74 } 75 76 int main(){ 77 for(int i=0; i<8; ++i) 78 for(int j=0; j<3; ++j) 79 scanf("%lld", &num[i][j]); 80 if(!dfs(0)) 81 printf("NO\n"); 82 return 0; 83 }
转载于:https://www.cnblogs.com/hujunzheng/p/3966599.html
codeforces Restore Cube(暴力枚举)相关推荐
- codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]
A - Maximal Intersection CodeForces - 1029C 题目大意:就是给你n个区间,这n个区间有公共的区间长度为x,现在叫你从这n个区间中删掉一个使得x最大化. 解题思 ...
- CodeForces - 253C:Text Editor(暴力枚举)
Discription Vasya is pressing the keys on the keyboard reluctantly, squeezing out his ideas on the c ...
- D. Shuffle(cf)暴力枚举 + 组合数学
原题链接:Problem - 1622D - Codeforces 题目大意:给你一串01串,告诉你长度n和一个数k,这个串中所有1的数量为k的子串,可以把这段子串重新排序.问你最后这个串能有多少种. ...
- POJ 3174 暴力枚举
思路: 暴力枚举三个点 判一判 搞定 (x1*y1=x2*y2) x1.y1.x2.y2为他们两两的差 //By SiriusRen #include <cstdio> using nam ...
- 最大字段和 冲出暴力枚举
这篇解题报告是对我最近一些题的总结,里面的代码都是我解题,优化,再优化的过程的记录,记录了自己对算法的完善与优化思路,还有对编程哲学的理解:do it,do it well. 很感谢孙老师您,让自己可 ...
- hdu 4587 TWO NODES 暴力枚举+tarjan
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题意是拿掉两个点 求最多可以把整个图分成几个联通块 注意到有一个模板是可以通过找割点来快速求出 ...
- 一道暴力枚举题Win32版本示例
来看一个问题:该问题的解法是 暴力枚举:这大概是ACM方面的:名称叫火柴棒等式: 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数( ...
- C. Divisibility by Eight【暴力枚举】
暴力枚举即可.枚举1位这种情况,枚举2位这种情况,枚举3位这种情况. 3位满足足以,其他的4位,5位...都包含1000必定满足. #include<bits/stdc++.h> usin ...
- YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)
文章目录 题目描述 解析 代码 题目描述 解析 没有想出来 首先可以确定开关要么开一次,要么不动,其他都和这俩是等价的 一开始最先想到的就是贪心的方法,每个开关遍历,如果按下会使答案变好就按下. 但是 ...
最新文章
- 使用jsp和tld实现javaweb开发
- PHP 模拟真实ip,PHP实现-获取用户的真实IP
- 10.16 多校联测
- 索引超出矩阵维度_搜索引擎技术之倒排索引原理详解,及案例分析
- php一句话怎么写_PHP一句话木马后门
- linux升级openssl需要先卸载吗,在Linux系统上升级OpenSSL的方法
- 数据结构与算法 —— 基础一(排列组合)
- 卡饭里的云计算机,微云可以在电脑用吗
- python邮件群发_Python操作Gmail@定时定向群发邮件
- 电赛专题 |国一作品_线路负载及故障检测装置
- ios如何解除dns被劫持_mac dns被劫持如何修复-Mac DNS被劫持解决方法 - 河东软件园...
- c语言小蜜蜂游戏编程,GMS2从零做游戏:小蜜蜂(一)
- Fitbit与JMDC签订协议,指定JMDC为日本企业客户的Fitbit Premium独家分销商
- vue中样式穿透的三种写法
- 微信小程序使用video组件时的一些坑
- 11.最长上升子序列(LIS)
- 查看mysql删除日志_如何查看数据库删除记录日志
- 电路基础 01电压、电流和功率
- C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)
- 探索性测试与脚本测试:谁赢了?
热门文章
- css x轴不滚动_css – 固定div,动态内容不滚动
- java.io.IOException 权限不够
- 检测到目标FTP服务可匿名访问
- 查看linux是否为虚拟机,以及其它信息,cpu,主机型号,主板型号等
- 企业实战07:Oracle数据库_查询语句
- 1450. 在既定时间做作业的学生人数
- Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.Date
- Qt中Tcp通信的简单使用二
- java写出http数据包_java用jpcap怎么识别出http和https的数据包?
- java飞行记录器是什么_运行java飞行记录器JFR(java flight recorder)