hdu - 4452 - Running Rabbits
来源:互联网 发布:盗取商业数据 编辑:程序博客网 时间:2024/05/12 10:20
题意:一个N*N的正方形田野分成1*1的格子,有两只兔子,Tom在左上角(1, 1),Jerry在右下角(N, N),它们可以沿东南西北4个方向走,但不可出格,各有各的速度,相遇时,两只兔子交换移动方向,碰边界时反向,各自还有自己的转左周期,周期一到即转左(但此时两只兔子相遇就不执行此周期转左),问K小时后两只兔子的坐标。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4452
——>>照着走就是了。
边界处理:若N = 5,
右或下出界:
x(或y)直接取模2*N-2
1234543212345432123……周期为2*5-2,存入数组a;
左或上出界:
x(或y) 变成1 - x(或1 - y)再取模2*N-2
……123454321234543212345周期为2*5-2,存入数组b;
开始没注意到speed( 1≤s<N),以为会来回改变方向多次,写多写错……其实挺水,这题……
#include <cstdio>#include <algorithm>using namespace std;int N, a[50], b[50];void turn(char& c) //转左{ switch(c) { case 'E': c = 'N'; break; case 'S': c = 'E'; break; case 'W': c = 'S'; break; case 'N': c = 'W'; break; }}void moveto(char& c, int s, int& x, int& y) //移步{ switch(c) { case 'E': { y += s; if(y > N) { y = a[y%(2*N-2)]; c = 'W'; } break; } case 'S': { x += s; if(x > N) { x = a[x%(2*N-2)]; c = 'N'; } break; } case 'W': { y -= s; if(y < 1) { y = b[(1-y)%(2*N-2)]; c = 'E'; } break; } case 'N': { x -= s; if(x < 1) { x = b[(1-x)%(2*N-2)]; c = 'S'; } break; } }}int main(){ int K, T_s, T_t, J_s, J_t, i; char T_c, J_c; while(~scanf("%d", &N)) { if(!N) return 0; scanf("\n%c%d%d", &T_c, &T_s, &T_t); scanf("\n%c%d%d", &J_c, &J_s, &J_t); scanf("%d", &K); int T_x = 1, T_y = 1, J_x = N, J_y = N; a[0] = 2; for(i = 1; i <= N; i++) a[i] = i; for(i = N+1; i <= 2*N-3; i++) a[i] = 2*N-i; b[0] = 1; for(i = 1; i <= N-1; i++) b[i] = i+1; for(i = N; i <= 2*N-3; i++) b[i] = 2*N-i-1; for(i = 1; i <= K; i++) { moveto(T_c, T_s, T_x, T_y); moveto(J_c, J_s, J_x, J_y); if(T_x == J_x && T_y == J_y) swap(T_c, J_c); else { if(i % T_t == 0) turn(T_c); if(i % J_t == 0) turn(J_c); } } printf("%d %d\n", T_x, T_y); printf("%d %d\n", J_x, J_y); } return 0;}
- hdu 4452 Running Rabbits
- hdu 4452 Running Rabbits
- hdu 4452 Running Rabbits
- hdu - 4452 - Running Rabbits
- hdu 4452 Running Rabbits
- hdu 4452 Running Rabbits
- HDU 4452 Running Rabbits
- hdu 4452 Running Rabbits
- HDU 4452 Running Rabbits
- HDU 4452 Running Rabbits
- HDU 4452 Running Rabbits 【模拟】
- [模拟] hdu 4452 Running Rabbits
- HDU 4452 Running Rabbits [模拟]
- [hdu 4452] Running Rabbits 模拟
- hdu 4452 Running Rabbits (模拟)
- Hdu 4452 Running Rabbits 大模拟
- hdu 4452 Running Rabbits (简单模拟)
- hdu 4452 Running Rabbits(模拟水题)
- 服务器最小化安装centos6.3之后-_-
- php header()函数使用说明
- JAVA中的反射机制详解
- dbms_stats 使用方式
- 用MFC如何高效地绘图
- hdu - 4452 - Running Rabbits
- ObjC内存管理推荐写法
- or1200的soc完善
- 开源 cocos2dx 五彩连珠.
- PHP100 面试题
- Secret of the JavaScript Ninja 学习笔记 - 7
- 把一个字符串转成double类型的数
- zoj 1456 Minimum Transport Cost 最短路
- 【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观