uva live 6479
来源:互联网 发布:淘宝宝贝怎么设置套餐 编辑:程序博客网 时间:2024/05/17 21:53
https://icpcarchive.ecs.baylor.edu/external/64/6479.pdf
思路:我们将操作换个说法,叫激活吧,A被激活为B,B被激活为C,C被激活为D,D被激活的话,他就会激活四周的人,但每次输入地图上每个人只能被激活一次。
代码:
#include<iostream>#include<cstdio>#include<cmath>#include<queue>#include<set>#include<cstring>#include<algorithm>#define LL long long#define MOD 100000007#define INF 0x3f3f3f3fusing namespace std;int n,m;char g[105][105];bool done[105][105];bool is_ill(int x,int y){ if(x<0||y<0||x>=n||y>=m)return 1; return 0;}int opp[]={1,0,3,2};int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};void solve(int x,int y,int dir){ if(g[x][y]=='X')return ; if(g[x][y]!='D') { g[x][y]++; return ; } if(!done[x][y]) { done[x][y]=1; for(int i=0;i<4;i++) if(opp[i]!=dir) { int curx=x+dx[i]; int cury=y+dy[i]; if(curx==5&&cury==4&&i==2) { int cc=0; } if(is_ill(curx,cury))continue; solve(curx,cury,i); } }}int main(){ int T,k; scanf("%d",&T); while(T--) { scanf("%d%d",&m,&n); for(int i=0;i<n;i++) scanf("%s",g[i]); scanf("%d",&k); int x,y; while(k--) { memset(done,0,sizeof done); scanf("%d%d",&y,&x); solve(x,y,-1); } int vv=0; for(int i=0;i<n;i++) puts(g[i]); } return 0;}
0 0
- uva live 6479
- Uva-Live Archive3902-Network
- Uva-Live 3905-Meteor
- UVA live 2678 - Subsequence
- UVA Live 6068
- uva live 6481
- uva live 6183 Stylish
- uva live 4725题解
- uva live 4728
- UVa Live 7278
- Uva-Live Archive-3635-Pie
- uva live 3516 - Exploring Pyramids
- UVA Live 5911:Binary Encoding
- UVA LIVE-4413 - Triangle Hazard
- UVA LIVE-4642 - Malfatti Circles
- UVA LIVE-4642 - Malfatti Circles
- uva live-2322 - Wooden Sticks
- uva live 2326 - Moving Tables
- 各种数据结构的存储结构描述
- android,手机防盗笔记。手机imsi,sms。
- 职场分享:在职场中我们需要哪些工作技巧
- poj2752 Seek the Name, Seek the Fame(next数组的运用)
- 在新公司的两个月
- uva live 6479
- 你知道C/S和B/S两种架构有什么区别吗?
- linux 重启服务命令
- PHP在代码中屏蔽错误和警告
- hdu4932 Miaomiao's Geometry (BestCoder Round #4 枚举)
- Java 欧拉工程 第二十六篇【 小于1000的数字中令1/d拥有最长循环圈的数字d】
- 操作系统相关
- mount: wrong fs type, bad option, bad superblock
- 根据request获取Ip地址