题面有误!10,11,12操作类别为A,13,14,15类别为B,16,17,18类别为C.

分析:一道大暴力,每次记录一下走了多少步,上一步操作类别是啥就可以了.最后只需要写6种操作,每一次操作进行4次就还原了,所以不用memcpy再来转.

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, ans[], cnt, c[];
bool stop = false; void turn1()
{
int tmp, tmp2;
tmp = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp2;
c[] = tmp;
} void turn2()
{
int tmp,tmp2;
tmp = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp2;
c[] = tmp;
} void turn3()
{
int tmp = c[], tmp2;
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
c[] = tmp2;
} void turn4()
{
int tmp = c[], tmp2;
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
c[] = tmp2;
} void turn5()
{
int tmp = c[], tmp2;
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp2;
c[] = tmp;
} void turn6()
{
int tmp = c[], tmp2;
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
tmp = c[];
tmp2 = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = c[];
c[] = tmp;
c[] = tmp2;
} bool check()
{
return c[] == c[] && c[] == c[] && c[] == c[] &&
c[] == c[] && c[] == c[] && c[] == c[] &&
c[] == c[] && c[] == c[] && c[] == c[] &&
c[] == c[] && c[] == c[] && c[] == c[] &&
c[] == c[] && c[] == c[] && c[] == c[] &&
c[] == c[] && c[] == c[] && c[] == c[];
} void dfs(int dep, int flag)
{
if (check())
{
cnt = dep;
stop = ;
return;
}
if (dep >= n)
return;
if (flag != )
{
for (int i = ; i <= ; i++)
{
turn1();
ans[dep + ] = i;
dfs(dep + , );
if (stop)
return;
}
turn1();
}
if (flag != )
{
for (int i = ; i <= ; i++)
{
turn2();
ans[dep + ] = + i;
dfs(dep + , );
if (stop)
return;
}
turn2();
}
if (flag != )
{
for (int i = ; i <= ; i++)
{
turn3();
ans[dep + ] = + i;
dfs(dep + , );
if (stop)
return;
}
turn3();
} if (flag != )
{
for (int i = ; i <= ; i++)
{
turn4();
ans[dep + ] = + i;
dfs(dep + , );
if (stop)
return;
}
turn4();
}
if (flag != )
{
for (int i = ; i <= ; i++)
{
turn5();
ans[dep + ] = + i;
dfs(dep + , );
if (stop)
return;
}
turn5();
}
if (flag != )
{
for (int i = ; i <= ; i++)
{
turn6();
ans[dep + ] = + i;
dfs(dep + , );
if (stop)
return;
}
turn6();
} } int main()
{
scanf("%d", &n);
for (int i = ; i <= ; i++)
scanf("%d", &c[i]);
dfs(, );
for (int i = ; i <= cnt; i++)
printf("%d ", ans[i]); return ;
}

清北学堂模拟赛d5t6 cube的更多相关文章

  1. 清北学堂模拟赛day7 数字碰撞

    /* clj:水题别人都满分你不是你就完了,所以说水题一定要细心一点,有这么几个细节:①前导零的处理,全是零的时候要特判②换行要注意,不要多大一行,剩下就是水水的模拟了 */ #include< ...

  2. 清北学堂模拟赛d4t1 a

    分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变, ...

  3. 清北学堂模拟赛day7 错排问题

    /* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...

  4. 清北学堂模拟赛day7 石子合并加强版

    /* 注意到合并三堆需要枚举两个端点,其实可以开一个数组记录合并两堆的结果,标程好像用了一个神奇的优化 */ #include<iostream> #include<cstdio&g ...

  5. 清北学堂模拟赛d6t6 棋盘迷宫

    3.棋盘迷宫(boardgame.pas/c/cpp)(boardgame.in/out)时间限制:5s/空间限制:256M[题目描述]小 A 和小 Z 是非常要好的朋友, 而且他们都对迷宫游戏非常有 ...

  6. 清北学堂模拟赛d1t2 火柴棒 (stick)

    题目描述众所周知的是,火柴棒可以拼成各种各样的数字.具体可以看下图: 通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推. 现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用 ...

  7. 清北学堂模拟赛d1t1 位运算1(bit)

    题目描述LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值.例如数字123拥有6的价值,数字999拥有27的价值.假设数字N的价值是K,LYK想找到一个 ...

  8. 清北学堂模拟赛d2t6 分糖果(candy)

    题目描述总共有n颗糖果,有3个小朋友分别叫做L,Y,K.每个小朋友想拿到至少k颗糖果,但这三个小朋友有一个共同的特点:对3反感.也就是说,如果某个小朋友拿到3颗,13颗,31颗,333颗这样数量的糖果 ...

  9. 清北学堂模拟赛d2t5 吃东西(eat)

    题目描述一个神秘的村庄里有4家美食店.这四家店分别有A,B,C,D种不同的美食.LYK想在每一家店都吃其中一种美食.每种美食需要吃的时间可能是不一样的.现在给定第1家店A种不同的美食所需要吃的时间a1 ...

随机推荐

  1. selenium3 + python - action_chains源码分析

    ActionChains简介 actionchains是selenium里面专门处理鼠标相关的操作如:鼠标移动,鼠标按钮操作,按键和上下文菜单(鼠标右键)交互.这对于做更复杂的动作非常有用,比如悬停和 ...

  2. web.xml里,classpath使用范围

    比如说在web.xml里,配置spring监听. 在标签<param-value>里,classpath指向的配置文件路径应该是在config资源文件夹下的applicationConte ...

  3. [转]HTML5 Day 4: Add Drop Down Menu to ASP.NET MVC HTML5 Template using CSS and jQuery

    本文转自:http://pietschsoft.com/post/2010/11/17/HTML5-Day-4-Add-DropDown-Menu-ASPNET-MVC-HTML5-Template- ...

  4. 跨平台键鼠共享软件synergy使用

    如果共享的机子都是win系统的话,也可以使用 无界鼠标. 这里主要讲跨平台通用的synergy.下载地址:http://synergy-project.org/ 注意1:最好下载同一位数,同一版本的. ...

  5. Android开发笔记(6)——类的设定与继承

    转载请注明http://www.cnblogs.com/igoslly/p/6838991.html [类]的设定与继承 当设置相同格式的TextView时,已提出在styles.xml自定义格式统一 ...

  6. JS——祝愿墙

    注意事项: 1.for循环的下一层注册了事件的话,事件函数中关于变量i的节点元素是不允许出现的,因为在函数加载的时候,只会加载函数名,不会加载函数体,外层for循环会走完一边,变量i一直会停留在最后一 ...

  7. JS——sort

    1.a-b升序 <script> var arr = [2, 3, 1, 5, 0]; function compare(a, b) { return a - b; } console.l ...

  8. js 性能调试

    今天有幸偶遇我早就神往已久的性能调试问题. 原来js调试工具里面有可以记录每个方法的执行时间的功能,站在此功能的肩膀上就可以对自己的程序性能.瓶颈了如指掌,就可以针对性的,瞄准目标,斩草除根,以绝后患 ...

  9. (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module

    http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...

  10. QQ空间里写的开发心得

    不回头看一眼还真没发现我已经写过这么多开发心得日志. 理一理设备数据走向  https://user.qzone.qq.com/1156740846/blog/1522292793 action的生命 ...