ZOJ 3429 Cube Simulation (思维题)
题目
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3429
题意
给一个无限大的长方体,有击中操作:
- FILL(X,Y,Z) : 按照先Z轴,后Y轴,再X轴标号,
- SWAP1(x1,x2): 交换由X轴坐标为x1的点构成的平面 和 由X轴坐标为x2的点构成的平面
- SWAP2(y1,y2): 交换由Y轴坐标为y1的点构成的平面 和 由Y轴坐标为y2的点构成的平面
- SWAP3(z1,z2): 交换由Z轴坐标为z1的点构成的平面 和 由Z轴坐标为z2的点构成的平面
- FIND(value) : 输出找标号为value的点的坐标
- QUERY(x,y,z): 输出点(x, y, z)处的标号
解法
可以看出交换操作并不影响另外的两个坐标,比如SWAP1(x1, x2), 并不影响y1, y2, z1, z2。
所以可以用三个数组x, y, z表示坐标,交换时只需交换相应的数组内的值
初始时各位置的标号可以很容易算出
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1100;
int main() {char op[10];int X, Y, Z;int a, b, c, val;int px, py, pz;int x[N], y[N], z[N];while(~scanf("%s", op)) {if(strcmp(op, "FILL") == 0) {scanf("%d%d%d", &X, &Y, &Z);printf("START\n");for(int i = 0; i < X; i++)x[i] = i;for(int i = 0; i < Y; i++)y[i] = i;for(int i = 0; i < Z; i++)z[i] = i;}else if(strcmp(op, "SWAP1") == 0) {scanf("%d%d", &a, &b);swap(x[a], x[b]);}else if(strcmp(op, "SWAP2") == 0) {scanf("%d%d", &a, &b);swap(y[a], y[b]);}else if(strcmp(op, "SWAP3") == 0) {scanf("%d%d", &a, &b);swap(z[a], z[b]);}else if(strcmp(op, "FIND") == 0) {scanf("%d", &val);if(val > X * Y * Z)continue;a = (val - 1) / (Z * Y);b = ((val - 1) % (Z * Y)) / Z;c = (val - 1) % Z;for(int i = 0; i < X; i++) {if(x[i] == a) {px = i; break; } }for(int i = 0; i < Y; i++) {if(y[i] == b) {py = i; break; } }for(int i = 0; i < Z; i++) {if(z[i] == c) {pz = i; break; } }printf("%d %d %d\n", px, py, pz);}else if(strcmp(op, "QUERY") == 0) {scanf("%d%d%d", &a, &b, &c);printf("%d\n", Y * Z * x[a] + Z * y[b] + z[c] + 1);}}return 0;
}
Source
ZOJ Monthly, November 2010
转载于:https://www.cnblogs.com/acm_record/p/4753667.html
ZOJ 3429 Cube Simulation (思维题)相关推荐
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- little w and Soda(思维题)
链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- yoyo思维题(困难) 组合数学
问题 B: yoyo思维题(困难) 时间限制: 1 Sec 内存限制: 256 MB 提交: 11 解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...
- 1884: 三个家庭(思维题)
1884: 三个家庭 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 244 Solved: 81 [Submit][Status][Web Board] ...
- 思维题 UVA 10881 Piotr's Ants
题目传送门 1 /* 2 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 3 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 4 关键2:蚂蚁的相对位置 ...
- CF--思维练习-- CodeForces - 215C - Crosses(思维题)
ACM思维题训练集合 There is a board with a grid consisting of n rows and m columns, the rows are numbered fr ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
- CodeForces - 1102A(思维题)
https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...
- ☆【CodeForces - 764C】Timofey and a tree (思维题,树的性质)
题干: Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After tha ...
- 【HDU - 2203】 亲和串 (思维题,可选KMP)
题干: Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了, ...
最新文章
- mybatis中![CDATA[]]的作用
- Kettle性能调优汇总
- Apache虚拟目录和多端口多主机名配置
- oracle河南城建学院实验报告,数据处理实验报告
- 用jetty起maven工程debug报source not found
- LINUX内核下跑单片机按键,S3C2440下linux按键驱动编写及测试程序
- vue-cli3.0(创建项目)如何引入element-ui(指令篇)
- 在python中类型属于对象变量是没有类型的_如何理解python对象有类型,变量无类型...
- 小心费力不讨好!Facebook成立“抄袭小组”压制Snap
- python解析GF1卫星数据.xml文件
- python称为胶水的例子_为什么称python为胶水语言
- java jtextpane_java – 从JTextPane获取原始文本
- Kruscal算法---最小生成树
- Windows解决net Framerwork 3.5无法安装的问题
- 基于C/C++的弹出气泡框
- 打发时光的100个网站
- C# 项目--更换用户头像,使用相对路径
- AI 在视频领域运用—弹幕穿人
- Linux:刚创建的普通用户不能使用Tab和上下左右键
- vue-codemirror搭配js代码美化使用指南