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 }
转载于:https://www.cnblogs.com/symons1992/p/3205077.html
hlgoj 1766 Cubing相关推荐
- Kylin 2.0 Spark Cubing 优化改进
2019独角兽企业重金招聘Python工程师标准>>> Kylin 2.0 引入了Spark Cubing beta版本,本文主要介绍我是如何让 Spark Cubing 支持 启用 ...
- codevs 1766 装果子
codevs 1766 装果子 题目描述 Description 果园里有n颗果树,每棵果树都有一个编号i(1≤i≤n).小明已经把每棵果树上的果子都摘下来堆在了这棵树的下方,每棵树下方的果子体积为a ...
- Apache Kylin Spark Cubing on Kubernetes 初探
2019独角兽企业重金招聘Python工程师标准>>> 背景介绍 相信凡是关注容器生态圈的人都不会否认,Kubernetes 已经成为容器编排调度的实际标准,不论 Docker 官方 ...
- [NWERC 2019] E. Expeditious Cubing 浮点数精度判断
题目链接:E. Expeditious Cubing 题意 一个人有五个成绩,计算最终成绩时需要去掉最大和最小值.现在已知四个成绩和目的成绩,问第五个最大是多少情况下满足小于等于目的成绩, 题解 本题 ...
- Codeforces 311D Interval Cubing 数学 + 线段树 (看题解)
Interval Cubing 这种数学题谁顶得住啊. 因为 (3 ^ 48) % (mod - 1)为 1 , 所以48个一个循环节, 用线段树直接维护. #include<bits/stdc ...
- CF311D Interval Cubing 数学、线段树
CF311D Interval Cubing 数学.线段树 数学太重要了..有些人知道点结论就喜欢搞个数学包装水题,欺负吾等数学学渣啊... CF有官方题解,不过我还是记录一下吧. 这是个线段树的经典 ...
- hihocoder 1766
#1766 : 字符串问题 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 一开始小 Hi 有一个空的字符串 T ,现在他想进行最少次数的操作使得 T 变成 S,操作有以 ...
- [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询
题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1,r1][l2,r2]从这两个区间中分别选择两个数字,使得这两个点的 ...
- 51nod 1766
题意:给定一个树(10^5),m个询问(10^5),每次给定a,b,c,d,在区间[a,b]中选一个点,[c,d]选一个点,使得这两个点距离最大,输出最大距离. 题解:首先,我们有一个结论:对于一个集 ...
最新文章
- Django基础-数据分页
- 71 说出常用的类、包、接口各5个
- 【iOS XMPP】使用XMPPFramewok(二):用户登录
- SiamMask算法详解
- 计算机网络ipv4到ipv6怎么实现,论计算机网络协议IPV4到IPV6的过渡策略|房屋搬迁过渡协议...
- python实现监控增量_python 日志增量抓取实现方法
- 软件开发生命周期模型
- PHP模板引擎Smarty概述
- 8月8日白暨豚宣告灭绝
- L2TP详解(五)——Client Initiated隧道和会话建立过程
- 使用短生命周期容器(Ephemeral Containers)构建微服务化的工作流
- python提示line3_Python小技巧:Python3中利用tab键进行代码提示-阿里云开发者社区...
- 天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)
- 无刷直流电机感应电动势为什么是梯形波?
- 分布式发号器架构设计
- 10月重磅程序员新书上架7本,每一本都很专业
- CentOS 6.5配置国内Yum源2016年8月1日更新
- Allegro 灵巧手 -硅步机器人
- 平均股价的时间序列图形_每年的平均股价怎么算
- 从学习php到可以独立做网站需要多久,第一课 前言 学PHP就是为了做网站
热门文章
- 坑了程序员的政府项目是什么样的?
- 如何通过OAuth2.0认证方式建立ServiceNow与Salesforce通信
- 加速下载ardupilot工程
- spring源码深度解析系列——环境搭建丢失spring-cglib-repack-3.2.8.jar和spring-objenesis-repack-3.0.1.jar的解决办法
- python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)
- matlab hanning和hann,哪位大侠能告知——为什么在MATLAB2012中不能调研(汉宁)窗函...
- 处nm是什么意思_nm是什么意思
- debian使用FTP详细配置教程
- ABeamNews|ABeam旗下德硕管理咨询(上海)荣获「2021-2022上半年SAP最佳云转型合作伙伴」大奖
- 教师运用计算机上课的随笔,初中信息技术教师的教学随笔5