uva live 6479
2014-09-01 08:47
232 查看
https://icpcarchive.ecs.baylor.edu/external/64/6479.pdf
思路:我们将操作换个说法,叫激活吧,A被激活为B,B被激活为C,C被激活为D,D被激活的话,他就会激活四周的人,但每次输入地图上每个人只能被激活一次。
代码:
思路:我们将操作换个说法,叫激活吧,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 0x3f3f3f3f using 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; }
相关文章推荐
- UVALive 6711(2013长春区域赛)
- UVALive 6659 Dromicpalin Substrings 枚举判断
- 【并查集】UVALive3027 Corporative Network
- UVa_Live 3664(精度坑)
- 【暴力】UVALive - 4882 - Parenthesis
- UVALive 5963 (LA 5963) Confusion in the Problem Set 二分图匹配 (或 YY)
- UVA340 UVALive5448 Master-Mind Hints【水题】
- UVALive - 3027:Corporative Network
- UVALIVE 5893 计算几何+搜索
- UVALive 6621 Pocket Cube(暴力)
- uva 1401 && Live Archive 3942 Remember the Word
- UVALive 5913 Dictionary Size 解题报告
- UVA202 UVALive5141 Repeating Decimals
- UVAlive 7502
- UVALive 6913 I Want That Cake 博弈dp
- UVALIVE 3637 The Bookcase <dp + 动态规划>
- UVALive 2957 Bring Them There(拆点+最大流)
- UVALive 6571 It Can Be Arranged
- 的 & UVALive5903
- UVAlive 4857 - Halloween Costumes 区间dp