zoukankan      html  css  js  c++  java
  • 洛谷 P3956 棋盘__(刷题)bfs

    题目:https://www.luogu.org/problemnew/show/P3956

    这道题拿到的时候觉得有点难!!

    确实是普及组的真题......没办法,硬着头皮做了!

    有一个重要的推理过程:

            魔法方面:如果你现在在红色上,下一个是空。如果下下个是红,那么肯定将空变成红色;

                                                                                        如果下下个是黄,那么空变为红再走上黄 -> 2+1=3;

                                                                                                                                       黄走上去,再走上黄 -> (2+1)+0=3;

            所以,无论如何,遇到空,都将它变为现在你所在的颜色^_^

    dfs过程中:就不断地分情况就行了!!

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int xx[4]={-1,1,0,0};
     5 int yy[4]={0,0,-1,1};
     6 int a[101][101];
     7 int f[101][101];
     8 int n,m,x,y,t;
     9 int ans=0x3f3f3f3f;
    10 
    11 void dfs(int x,int y,int sum,bool is)
    12 {
    13     if (x<1||x>m||y<1||y>m) return;
    14     if (sum >= f[x][y]) return;
    15     if (x==m && y==m)
    16     {
    17         ans = min(ans,sum);
    18         return;
    19     }
    20     f[x][y]=sum;
    21     for(int i=0;i<4;i++)
    22     {
    23         int dx=x+xx[i];
    24         int dy=y+yy[i];
    25         if (a[dx][dy])
    26         {
    27             if (a[dx][dy]==a[x][y]) dfs(dx,dy,sum,0);
    28             else dfs(dx,dy,sum+1,0);
    29         }
    30         else if (!a[dx][dy]&&!is)
    31         {
    32             a[dx][dy]=a[x][y];
    33             dfs(dx,dy,sum+2,1);
    34             a[dx][dy]=0;
    35         }
    36     }
    37 }
    38 int main(){
    39     scanf("%d%d",&m,&n);
    40     f[1][1]=0;
    41     memset(f,127,sizeof(f));
    42     for (int i=1;i<=n;i++)
    43     {
    44         scanf("%d%d%d",&x,&y,&t);
    45         a[x][y]=t+1;
    46     }
    47     
    48     dfs(1,1,0,0);
    49     if(ans!=0x3f3f3f3f) printf("%d",ans);
    50     else printf("-1");
    51     return 0;
    52 }

    谢谢^_^;

  • 相关阅读:
    使用基于关系的选择器和伪类选择器创建纯CSS无JavaScript的鼠标移动到上面即可显示的下拉菜单
    git学习教程
    笔记
    luogu P1429 平面最近点对(加强版)
    可持久化数据结构
    luogu P4137 Rmq Problem / mex
    置换群(Burnside引理+Polya定理)
    luogu P1053 篝火晚会
    luogu P3238 [HNOI2014]道路堵塞
    luogu P3812 【模板】线性基
  • 原文地址:https://www.cnblogs.com/pengcheng-official/p/9497345.html
Copyright © 2011-2022 走看看