【HDOJ】3500 Fling
题意巨难懂。简言之,就是球互相碰撞时,主动碰撞的球将会停止,另一个球将沿着碰撞方向继续移动,不断碰撞。但是无法弹射紧挨着的球,但是若a弹射b,bc相邻,这种情况b可以弹射c。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 #define MAXN 10 8 9 typedef struct { 10 int x, y; 11 char d; 12 } node_t; 13 14 node_t nodes[15]; 15 char map[MAXN][MAXN]; 16 int on; 17 // U < L < R < D. 18 int dir[4][2] = {-1,0,0,-1,0,1,1,0}; 19 20 bool check(int x, int y) { 21 return x<0||x>=7||y<0||y>=8; 22 } 23 24 char getDir(int k) { 25 if (k==0) return 'U'; 26 if (k==1) return 'L'; 27 if (k==2) return 'R'; 28 return 'D'; 29 } 30 31 bool dfs(int n) { 32 int i, j, k, x, y; 33 bool flag; 34 35 if (n == 0) 36 return true; 37 38 for (i=0; i<7; ++i) { 39 for (j=0; j<8; ++j) { 40 if (map[i][j] == 'O') { 41 for (k=0; k<4; ++k) { 42 x = i + dir[k][0]; 43 y = j + dir[k][1]; 44 if (check(x, y) || map[x][y]=='O') 45 continue; 46 flag = false; 47 while (!check(x, y)) { 48 if (map[x][y] == 'O') { 49 flag = true; 50 map[x][y] = 'X'; 51 map[x-dir[k][0]][y-dir[k][1]] = 'O'; 52 } 53 x += dir[k][0]; 54 y += dir[k][1]; 55 } 56 if (flag) { 57 map[i][j] = 'X'; 58 nodes[n].x = i; 59 nodes[n].y = j; 60 nodes[n].d = getDir(k); 61 if (dfs(n-1)) 62 return true; 63 do { 64 x -= dir[k][0]; 65 y -= dir[k][1]; 66 if (map[x][y] == 'O') { 67 map[x][y] = 'X'; 68 map[x+dir[k][0]][y+dir[k][1]] = 'O'; 69 } 70 } while (x!=i || y!=j); 71 map[i][j] = 'O'; 72 } 73 } 74 } 75 } 76 } 77 78 return false; 79 } 80 81 int main() { 82 int i = 0, j; 83 int t = 0; 84 85 #ifndef ONLINE_JUDGE 86 freopen("data.in", "r", stdin); 87 #endif 88 89 while (scanf("%s", &map[i]) != EOF) { 90 for (i=1; i<7; ++i) 91 scanf("%s", &map[i]); 92 on = 0; 93 for (i=0; i<7; ++i) 94 for (j=0; j<8; ++j) 95 if (map[i][j] == 'O') 96 ++on; 97 dfs(on-1); 98 99 if (t != 0) 100 printf("\n"); 101 printf("CASE #%d:\n", ++t); 102 for(i=on-1; i>=1; --i) 103 printf("%d %d %c\n", nodes[i].x, nodes[i].y, nodes[i].d); 104 getchar(); 105 i = 0; 106 } 107 108 return 0; 109 }
转载于:https://www.cnblogs.com/bombe1013/p/4047839.html
【HDOJ】3500 Fling相关推荐
- 【HDOJ】4602 Partition
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...
- 【HDOJ】4602 Partition_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...
- 【HDOJ】1008 Elevator_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...
- 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1022 [报告] 模拟,直接模拟一个栈的运行就行了. [程序] // Task: 1022 Train P ...
- 【HDOJ】1003 Max Sum_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...
- 【HDOJ】4768 Flyer_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...
- 【HDOJ】4699 Editor_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...
- 【HDOJ】4704 Sum_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=4704 [报告] S(K)显然就是N的K正整数划分数.所以SUM{S(K),1<=K<=N} ...
- 【HDOJ】1015 Safecracker_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...
- 【HDOJ】1020 Encoding_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...
最新文章
- TF-IDF模型的概率解释
- python基础课程_学习笔记13:标准库:有些收藏夹——sys
- little w and Segment Coverage(差分)
- 雷林鹏分享:C# 运算符
- Python Unittest参数化parameterized之数据驱动
- ppt转html5 带动画_这组PPT设计,真的太漂亮了!
- flutter去掉输入框最大字数显示
- webpack入坑之旅(一)不是开始的开始
- NWT失败反思:公司都死了,还怕得罪人
- 小米无线路由器经常连接不上网络连接服务器,小米路由器频繁掉线详细解决方法...
- websphere java和进程管理_Websphere 学习(一)
- tensorflow,pytorch中normalize方法
- linux 命令 tr 详解
- python算法_02字符串(罗马类型的转换整数)
- php 插件推荐,Typecho实用插件推荐(一)
- 超详细: Type-C接口Macbook笔记本无法充电(时连时断)的傻瓜处理流程
- 沐风:如何创造更多的睡后收入?
- 摄像头poe供电原理_监控摄像头poe供电维修方法
- Resource of computer vision, pattern recognition, machine learning etc.
- js读取本地文本文件,并生成Excel文件