HDU 4801 Pocket Cube
去年现场,虎哥1Y的,现在刷刷题,找找状态...
一共6种转法,把3个面放到顶部,左旋和右旋,感觉写的还不错....都写成常数了。
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <queue>
- #include <algorithm>
- #define LL long long
- using namespace std;
- struct node
- {
- int num[];
- int st;
- };
- int dr[] = {,,,,,,,,,,,};
- int dc[] = {,,,,,,,,,,,};
- int a[] = {,,,,,,,,,,,};
- int b[] = {,,,,,,,,,,,};
- int c[] = {,,,,,,,,,,,};
- int aim[][] = {
- {,,,},
- {,,,},
- {,,,},
- {,,,},
- {,,,},
- {,,,}
- };
- int judge(int *p)
- {
- int ans = ,i,j;
- for(i = ;i < ;i ++)
- {
- for(j = ;j < ;j ++)
- {
- if(p[aim[i][j]] != p[aim[i][]])
- break;
- }
- if(j == ) ans ++;
- }
- return ans;
- }
- int main()
- {
- node u,v;
- int n,i,ans;
- while(scanf("%d",&n)!=EOF)
- {
- for(i = ;i < ;i ++)
- {
- scanf("%d",&u.num[i]);
- }
- u.st = ;
- queue<node>que;
- que.push(u);
- ans = ;
- while(!que.empty())
- {
- u = que.front();
- que.pop();
- if(ans == ) break;
- ans = max(ans,judge(u.num));
- if(u.st == n) continue;
- v.st = u.st + ;
- //a
- for(i = ;i < ;i ++)
- {
- v.num[i] = u.num[i];
- }
- for(i = ;i < ;i ++)
- {
- v.num[a[dr[i]]] = u.num[a[i]];
- }
- que.push(v);
- for(i = ;i < ;i ++)
- {
- v.num[a[dc[i]]] = u.num[a[i]];
- }
- que.push(v);
- //b
- for(i = ;i < ;i ++)
- {
- v.num[i] = u.num[i];
- }
- for(i = ;i < ;i ++)
- {
- v.num[b[dr[i]]] = u.num[b[i]];
- }
- que.push(v);
- for(i = ;i < ;i ++)
- {
- v.num[b[dc[i]]] = u.num[b[i]];
- }
- que.push(v);
- //c
- for(i = ;i < ;i ++)
- {
- v.num[i] = u.num[i];
- }
- for(i = ;i < ;i ++)
- {
- v.num[c[dr[i]]] = u.num[c[i]];
- }
- que.push(v);
- for(i = ;i < ;i ++)
- {
- v.num[c[dc[i]]] = u.num[c[i]];
- }
- que.push(v);
- }
- printf("%d\n",ans);
- }
- return ;
- }
HDU 4801 Pocket Cube的更多相关文章
- HDU 5292 Pocket Cube 结论题
Pocket Cube 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5292 Description Pocket Cube is the 2×2× ...
- 【HDOJ】4801 Pocket Cube 的几种解法和优化
1. 题目描述给定一个$2 \times 2 \times 2$的魔方,当某个面上的4个小块颜色均相同时,称这个面为complete.求对这个魔方进行$n \in [1,7]$次旋转(沿某个面顺时针或 ...
- 2013区域赛长沙赛区现场赛 K - Pocket Cube
K - Pocket Cube Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Su ...
- Pocket Cube
Pocket Cube http://acm.hdu.edu.cn/showproblem.php?pid=5983 Time Limit: 2000/1000 MS (Java/Others) ...
- 【】【】Pocket Cube
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s) ...
- 2013 ACM区域赛长沙 K Pocket Cube hdu 4801
题意:给了一个2*2的魔方..每步操作可以将任意一面翻转90度..现在问在N(<=7)步内.最多能翻出几面相同的. 直接打表模拟每种翻转情况 #include<cstdio> #in ...
- HDU 1220 B - Cube
http://acm.hdu.edu.cn/showproblem.php?pid=1220 一开始的做法是,先暴力算出一个面,就是n * n的面,能有多少对.记作face 然后从上开始算下来,最上一 ...
- hdu 3547 DIY Cube (Ploya定理)
DIY Cube Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total S ...
- 模拟 ZOJ 3736 Pocket Cube
题目传送门 题意:魔方最多旋转n次,问最多能使多少面颜色相同 分析:6种状态(3种旋转方式*顺逆方向,其他对称的!),首先先打个表,然后很愉快的DFS.自己写的时候费劲脑汁,代码很长,还TLE了... ...
随机推荐
- http://www.microsoft.com/en-pk/download/details.aspx?id=40762
http://www.microsoft.com/en-pk/download/details.aspx?id=40762
- Python 网络爬虫(图片采集脚本)
===============爬虫原理================== 通过Python访问网站,获取网站的HTML代码,通过正则表达式获取特定的img标签中src的图片地址. 之后再访问图片地址 ...
- JAVA基础学习——1.0 Java概述
Java语言 SUN公司 1995年推出的高级编程语言 ■ 主要应用方向 Web开发和Android开发 ■ 主要特点 平台无关性:能运行于不同的平台上 安全性:去掉了指针操作,内存由操作 ...
- Node.js配合node-http-proxy解决本地开发ajax跨域问题
情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...
- ABAP 常见查询问题解决方法
在ABAP 编程的时候会遇到查询单条语句的时候数能取对 但是条目数多了的话 会出现数不准确的问题 原因可能出现在查询使用了二分法查询方式 二分法查询下必须按排序的字段排序 还得按照排序的字段 ...
- A Complete List of .NET Open Source Developer Projects
http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...
- 如何将 NavigationBar 的半透明效果关闭?
如何将 NavigationBar 的半透明效果关闭?只需三行代码就可以:self.navigationController.navigationBar.barTintColor = [UIColor ...
- <c:if test="value ne, eq, lt, gt,...."> 用法
类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...
- SpringBoot前世今生
序 本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望. 背景 在很早的年代,J2EE还是java企业级应用的王者规范,EJB风行其道.后来有一个叫Rod John ...
- 深入理解 spring 容器,源码分析加载过程
Spring框架提供了构建Web应用程序的全功能MVC模块,叫Spring MVC,通过Spring Core+Spring MVC即可搭建一套稳定的Java Web项目.本文通过Spring MVC ...