题面有误!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. P3225 [HNOI2012]矿场搭建 tarjan割点

    这个题需要发现一点规律,就是先按割点求块,然后求每个联通块中有几个割点,假如没有割点,则需要建两个出口,如果一个割点,则需要建一个出口,2个以上不用建. 题干: 题目描述 煤矿工地可以看成是由隧道连接 ...

  2. 57.部门职位管理 ExtJs 展示

    1.jobInfo.jsp <%@ page language="java" pageEncoding="UTF-8"%> <script t ...

  3. 46. Ext中namespace的作用(转)

    转自:https://www.cnblogs.com/givemeanorange/p/5569954.html Ext中在每一个页面中添加一个namespace呢,就像下面的代码: // creat ...

  4. El Dorado(dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=2372 题意:给出n个数,求长度为m的递增子序列的数目. 思路:状态转移方程 dp[i][j] = sum(dp[ ...

  5. [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. Hadoop Hive概念学习系列之hive与依赖环境的交互(二十一)

    hive与环境的交互,算是一个小知识点,但掌握不菲! 如何在hive里,也达到这样呢? 不需要这样啦,因为,hive是建立在hadoop之上,启动hive,相当于,就是,hadoop jar ** h ...

  7. Linq学习(一)-初涉Linq

    一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封 ...

  8. MySQL索引----数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  9. 关于idea failed to start SceneBuilder 的解决方法

    问题描述: javaFx无法启动SceneBuilder. 问题原因: SceneBuilder不正当配置. 解决方法:1. 下载SceneBuilder   https://www.oracle.c ...

  10. build.gradle(Mdule.app)依赖库相关

    dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //noinspection GradleCompati ...