zoukankan      html  css  js  c++  java
  • 2019多校联讯 test 3 T2

    dfs+二分答案,二分可能的伤害值

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1050;
    int n,m;
    int p[maxn][maxn];
    int dx[5]={0,1,-1,0,0};
    int dy[5]={0,0,0,-1,1};
    int l,r;
    bool flag;
    bool vis[maxn][maxn];
    void dfs(int x,int y,int cost)
    {
        if(x==n){
            flag=true;
            return;
        }
        for(int i=1;i<=4;i++)
        {
            int xx=x+dx[i];
            int yy=y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]&&cost>=p[xx][yy])
            {
                vis[xx][yy]=true;
                dfs(xx,yy,cost);
            }
            if(flag==true) return;
        }
    }
    bool check(int x)
    {
        flag=false;
        memset(vis,0,sizeof(vis));
        dfs(1,1,x);
        if(flag) return true;
        else return false;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                scanf("%d",&p[i][j]);
            }
        }
        l=0,r=1000;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if(check(mid)) r=mid-1;
            else l=mid+1;
        }
        printf("%d",l);
        return 0;
    }
  • 相关阅读:
    PatentTips
    PatentTips
    PatentTips
    Xvisor ARM32 启动分析
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
    PatentTips
  • 原文地址:https://www.cnblogs.com/LJB666/p/10994460.html
Copyright © 2011-2022 走看看