hlgoj 1766 Cubing

  模拟。下图是我做的小模型。

  1 #include <iostream>
  2 #include <stdio.h>
  3 #include <queue>
  4 #include <stdlib.h>
  5 #include <algorithm>
  6 #include <math.h>
  7 #include <iomanip>
  8 #include <stack>
  9 #include <map>
 10 #include <vector>
 11 #include <string>
 12 using namespace std;
 13 /*
 14     剩下的就是正常的代码了
 15 -------------------------------------------------
 16 */
 17 char D[10],T[10],F[10],B[10],L[10],R[10];
 18 void turn_face(char temp[10])   //顺时针旋转一面
 19 {
 20     int i,j;
 21     char t;
 22     t=temp[1];
 23     temp[1]=temp[7];    temp[7]=temp[9];    temp[9]=temp[3];    temp[3]=t;
 24     t=temp[2];
 25     temp[2]=temp[4];    temp[4]=temp[8];    temp[8]=temp[6];    temp[6]=t;
 26     return;
 27 }
 28 void turn_D()
 29 {
 30    // cout<<"turn D\n";
 31     char t[3];
 32     t[0]=F[7];  t[1]=F[8];  t[2]=F[9];
 33     F[7]=L[9];  F[8]=L[6];  F[9]=L[3];
 34     L[9]=B[3];  L[6]=B[2];  L[3]=B[1];
 35     B[3]=R[1];  B[2]=R[4];  B[1]=R[7];
 36     R[1]=t[0];  R[4]=t[1];  R[7]=t[2];
 37     turn_face(D);
 38     return ;
 39 }
 40
 41 void turn_T()
 42 {
 43     //cout<<"turn T\n";
 44     char t[3];
 45     t[0]=B[7];  t[1]=B[8];  t[2]=B[9]; //R 1,4,7  ->  B 7,8,9
 46     B[7]=L[1];  B[8]=L[4];  B[9]=L[7]; //F 3,2,1  ->  R 1,4,7
 47     L[1]=F[3];  L[4]=F[2];  L[7]=F[1]; //L 9,6,3  ->  F 3,2,1
 48     F[3]=R[9];  F[2]=R[6];  F[1]=R[3]; //t 0,1,2  ->  L 9,6,3
 49     R[9]=t[0];  R[6]=t[1];  R[3]=t[2];
 50     turn_face(T);
 51     return ;
 52 }
 53 void turn_F()
 54 {
 55   //  cout<<"turn F\n";
 56     char t[3];
 57     t[0]=T[7];  t[1]=T[8];  t[2]=T[9];
 58     T[7]=L[3];  T[8]=L[2];  T[9]=L[1];
 59     L[3]=D[3];  L[2]=D[2];  L[1]=D[1];
 60     D[3]=R[3];  D[2]=R[2];  D[1]=R[1];
 61     R[3]=t[0];  R[2]=t[1];  R[1]=t[2];
 62     turn_face(F);
 63     return;
 64 }
 65 void turn_B()
 66 {
 67     //cout<<"turn B\n";
 68     char t[3];
 69     t[0]=D[7];  t[1]=D[8];  t[2]=D[9];
 70     D[7]=L[7];  D[8]=L[8];  D[9]=L[9];
 71     L[7]=T[3];  L[8]=T[2];  L[9]=T[1];
 72     T[3]=R[7];  T[2]=R[8];  T[1]=R[9];
 73     R[7]=t[0];  R[8]=t[1];  R[9]=t[2];
 74     turn_face(B);
 75     return;
 76 }
 77 void turn_R()
 78 {
 79     //cout<<"turn L\n";
 80     char t[3];
 81     t[0]=F[9];  t[1]=F[6];  t[2]=F[3];
 82     F[9]=D[9];  F[6]=D[6];  F[3]=D[3];
 83     D[9]=B[9];  D[6]=B[6];  D[3]=B[3];
 84     B[9]=T[9];  B[6]=T[6];  B[3]=T[3];
 85     T[9]=t[0];  T[6]=t[1];  T[3]=t[2];
 86     turn_face(R);
 87     return;
 88 }
 89 void turn_L()
 90 {
 91    // cout<<"turn R\n";
 92     char t[3];
 93     t[0]=F[1];  t[1]=F[4];  t[2]=F[7];
 94     F[1]=T[1];  F[4]=T[4];  F[7]=T[7];
 95     T[1]=B[1];  T[4]=B[4];  T[7]=B[7];
 96     B[1]=D[1];  B[4]=D[4];  B[7]=D[7];
 97     D[1]=t[0];  D[4]=t[1];  D[7]=t[2];
 98     turn_face(L);
 99     return;
100 }
101 void init()
102 {
103     int i;
104     for(i=0;i<10;++i){
105         D[i]='y';
106         T[i]='w';
107         F[i]='r';
108         B[i]='o';
109         L[i]='g';
110         R[i]='b';
111     }
112     return;
113 }
114 int main()
115 {
116     string order;
117     int n,t;
118     int i;
119     while(cin>>t){
120         while(t--){
121         cin>>n;
122         init();
123         while(n--){
124             cin>>order;
125             if(order[0]=='D'){
126                 if(order[1]=='+')    turn_D();
127                 else   {
128                     turn_D();turn_D();turn_D();
129                 }
130             }
131             else if(order[0]=='U'){
132                 if(order[1]=='+')    turn_T();
133                 else   {
134                     turn_T();turn_T();turn_T();
135                 }
136             }
137             else if(order[0]=='F'){
138                 if(order[1]=='+')    turn_F();
139                 else   {
140                     turn_F();turn_F();turn_F();
141                 }
142             }
143             else if(order[0]=='B'){
144                 if(order[1]=='+')    turn_B();
145                 else   {
146                     turn_B();turn_B();turn_B();
147                 }
148             }
149             else if(order[0]=='L'){
150                 if(order[1]=='+')    turn_L();
151                 else   {
152                     turn_L();
153                     turn_L();
154                     turn_L();
155                 }
156             }
157             else if(order[0]=='R'){
158                 if(order[1]=='+')    turn_R();
159                 else   {
160                     turn_R();turn_R();turn_R();
161                 }
162             }
163         }
164         for(i=1;i<10;++i){
165             cout<<T[i];
166             if(i%3==0) cout<<endl;
167         }
168         }
169     }
170     return 0;
171 }

posted on 2013-07-22 12:18 symons 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/symons1992/p/3205077.html

hlgoj 1766 Cubing相关推荐

  1. Kylin 2.0 Spark Cubing 优化改进

    2019独角兽企业重金招聘Python工程师标准>>> Kylin 2.0 引入了Spark Cubing beta版本,本文主要介绍我是如何让 Spark Cubing 支持 启用 ...

  2. codevs 1766 装果子

    codevs 1766 装果子 题目描述 Description 果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n).小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为a ...

  3. Apache Kylin Spark Cubing on Kubernetes 初探

    2019独角兽企业重金招聘Python工程师标准>>> 背景介绍 相信凡是关注容器生态圈的人都不会否认,Kubernetes 已经成为容器编排调度的实际标准,不论 Docker 官方 ...

  4. [NWERC 2019] E. Expeditious Cubing 浮点数精度判断

    题目链接:E. Expeditious Cubing 题意 一个人有五个成绩,计算最终成绩时需要去掉最大和最小值.现在已知四个成绩和目的成绩,问第五个最大是多少情况下满足小于等于目的成绩, 题解 本题 ...

  5. Codeforces 311D Interval Cubing 数学 + 线段树 (看题解)

    Interval Cubing 这种数学题谁顶得住啊. 因为 (3 ^ 48) % (mod - 1)为 1 , 所以48个一个循环节, 用线段树直接维护. #include<bits/stdc ...

  6. CF311D Interval Cubing 数学、线段树

    CF311D Interval Cubing 数学.线段树 数学太重要了..有些人知道点结论就喜欢搞个数学包装水题,欺负吾等数学学渣啊... CF有官方题解,不过我还是记录一下吧. 这是个线段树的经典 ...

  7. hihocoder 1766

    #1766 : 字符串问题 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 一开始小 Hi 有一个空的字符串 T ,现在他想进行最少次数的操作使得 T 变成 S,操作有以 ...

  8. [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询

    题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1​,r1​][l2​,r2​]从这两个区间中分别选择两个数字,使得这两个点的 ...

  9. 51nod 1766

    题意:给定一个树(10^5),m个询问(10^5),每次给定a,b,c,d,在区间[a,b]中选一个点,[c,d]选一个点,使得这两个点距离最大,输出最大距离. 题解:首先,我们有一个结论:对于一个集 ...

最新文章

  1. Django基础-数据分页
  2. 71 说出常用的类、包、接口各5个
  3. 【iOS XMPP】使用XMPPFramewok(二):用户登录
  4. SiamMask算法详解
  5. 计算机网络ipv4到ipv6怎么实现,论计算机网络协议IPV4到IPV6的过渡策略|房屋搬迁过渡协议...
  6. python实现监控增量_python 日志增量抓取实现方法
  7. 软件开发生命周期模型
  8. PHP模板引擎Smarty概述
  9. 8月8日白暨豚宣告灭绝
  10. L2TP详解(五)——Client Initiated隧道和会话建立过程
  11. 使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流
  12. python提示line3_Python小技巧:Python3中利用tab键进行代码提示-阿里云开发者社区...
  13. 天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)
  14. 无刷直流电机感应电动势为什么是梯形波?
  15. 分布式发号器架构设计
  16. 10月重磅程序员新书上架7本,每一本都很专业
  17. CentOS 6.5配置国内Yum源2016年8月1日更新
  18. Allegro 灵巧手 -硅步机器人
  19. 平均股价的时间序列图形_每年的平均股价怎么算
  20. 从学习php到可以独立做网站需要多久,第一课 前言 学PHP就是为了做网站

热门文章

  1. 坑了程序员的政府项目是什么样的?
  2. 如何通过OAuth2.0认证方式建立ServiceNow与Salesforce通信
  3. 加速下载ardupilot工程
  4. spring源码深度解析系列——环境搭建丢失spring-cglib-repack-3.2.8.jar和spring-objenesis-repack-3.0.1.jar的解决办法
  5. python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)
  6. matlab hanning和hann,哪位大侠能告知——为什么在MATLAB2012中不能调研(汉宁)窗函...
  7. 处nm是什么意思_nm是什么意思
  8. debian使用FTP详细配置教程
  9. ABeamNews|ABeam旗下德硕管理咨询(上海)荣获「2021-2022上半年SAP最佳云转型合作伙伴」大奖
  10. 教师运用计算机上课的随笔,初中信息技术教师的教学随笔5