zoukankan      html  css  js  c++  java
  • codeforces1064D

    题意是给你一个字符矩阵,‘*’是障碍物,给你起点r,c,和最多能向左走的步数x,最多能向右走的步数y

    问你可访问的点的个数是多少

    一开始用直接暴力BFS被hack了,后来加上优先队列就能ac

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    char data[2005][2005];
    int n,m,r,c,x,y;
    struct node
    {
        int x,y,l,r;
        bool operator <(node a)const
        {
            if(l==a.l)
                return r>a.r;
            else
                return l>a.l;
        }
    };
    int ans=0;
    bool isok(int x,int y)
    {
        return x>=0&&x<n&&y>=0&&y<m&&data[x][y]!='*';
    }
    int vis[2005][2005];
    int dir[4][2]= {-1,0,0,1,1,0,0,-1};
    void bfs()
    {
        priority_queue<node>q;
        q.push(node{r-1,c-1,0,0});
        vis[r-1][c-1]=1;
    //    data[r-1][c-1]='+';
        ans++;
        while(!q.empty())
        {
            node u = q.top();
            q.pop();
    //        printf("%d %d
    ",u.x,u.y);
            for (int i=0; i<4 ; i++ )
            {
                int newx=u.x+dir[i][0];
                int newy=u.y+dir[i][1];
                if(isok(newx,newy) && !vis[newx][newy] && (u.l+(i==3?1:0)<=x) && (u.r+(i==1?1:0)<=y) )
                {
                    ans++;
    //                data[newx][newy]='+';
                    vis[newx][newy]=1;
                    q.push(node{newx,newy,u.l+(i==3?1:0),u.r+(i==1?1:0)});
                }
            }
        }
    }
    int main()
    {
        ans=0;
        memset(vis,0,sizeof(vis));
        scanf("%d%d",&n,&m);
        scanf("%d%d",&r,&c);
        scanf("%d%d",&x,&y);
        getchar();
        for (int i=0; i<n ; i++ )
        {
            for (int j=0; j<m ; j++ )
            {
                data[i][j]=getchar();
            }
            getchar();
        }
        bfs();
        printf("%d",ans);
    }
  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/Json-Five/p/9791660.html
Copyright © 2011-2022 走看看