B. Phillip and Trains

 

 

http://codeforces.com/contest/585/problem/B

 

 

模拟

 

 

 1 
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner io = new Scanner(System.in);
 6         int t = io.nextInt();
 7         int[][]g=new int[400][400];
 8         //不优化的话队列里会有很多重复成员
 9         int[][]vis=new int[400][400];
10         int[]dy=new int[]{0,1,-1};
11 
12         OUT:
13         while (t-->0){
14             int x0 =io.nextInt(),k=io.nextInt();
15             for (int i = 0; i < g.length; i++){ Arrays.fill(g[i],'.');Arrays.fill(vis[i],0);}
16 
17             ArrayDeque<int[]>q=new ArrayDeque();
18             for (int i = 1; i <= 3; i++) {
19                 String s=io.nextLine();while (s.length()==0)s=io.nextLine();
20                 for (int j = 0; j < s.length(); j++){
21                      if ((g[j+1][i]=s.charAt(j))=='s')q.add(new int[]{j+1,i});
22                 }
23             }
24             while (!q.isEmpty()){
25                 int[]s=q.poll();int x=s[0],y=s[1];
26 
27                 //往前走一步
28                 int xx=x+1,yy=y;
29                 if (g[xx][yy]>='A'&&g[xx][yy]<='Z')continue ;
30 
31                 //往上走、不动、往下走
32                 for (int i = 0; i < dy.length; i++) {
33                      yy=y+dy[i];
34                     if (yy<1||yy>3)continue ;
35                     if (g[xx][yy]>='A'&&g[xx][yy]<='Z')continue ;
36                     if (g[xx+1][yy]>='A'&&g[xx+1][yy]<='Z')continue ;
37                     if (g[xx+2][yy]>='A'&&g[xx+2][yy]<='Z')continue ;
38 
39                     if (xx+2>x0){ System.out.println("YES");continue OUT;}
40                     if (vis[xx+2][yy]==0) {
41                         q.add(new int[]{xx+2,yy});vis[xx+2][yy]=1;
42                     }
43 
44                 }
45             }
46             System.out.println("NO");
47         }
48     }
49   
50 }

 

转载于:https://www.cnblogs.com/towerbird/p/11238324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值