zoukankan      html  css  js  c++  java
  • [dfs+水] hdu 4462 Scaring the Birds

    题意:

    N*N的矩阵中有M个点能够放稻草人。且给覆盖距离R

    每一个稻草人能覆曼哈顿距离R以内的点

    问最少须要多少个稻草人

    思路:

    由于范围非常小,直接能够暴力

    注意稻草人所在的位置是不须要被覆盖的

    代码:

    #include"cstdlib"
    #include"cstdio"
    #include"cstring"
    #include"cmath"
    #include"queue"
    #include"algorithm"
    #include"iostream"
    using namespace std;
    int map[55][55];
    int n,m;
    int ans;
    struct point
    {
        int x,y,r;
    }p[11];
    void dfs(int x,int sum)
    {
        if(x==m)
        {
            int f=1;
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    if(map[i][j]!=0) continue;
                    int k;
                    for(k=0;k<m;k++)
                    {
                        if(map[p[k].x][p[k].y]==-1) continue;
                        if(abs(i-p[k].x)+abs(j-p[k].y)<=p[k].r) break;
                    }
                    if(k==m)
                    {
                        f=0;
                        break;
                    }
                }
                if(!f) break;
            }
            if(f) ans=min(ans,sum);
            return ;
        }
        dfs(x+1,sum);
        map[p[x].x][p[x].y]=p[x].r;
        dfs(x+1,sum+1);
        map[p[x].x][p[x].y]=-1;
    }
    int main()
    {
        while(scanf("%d",&n),n)
        {
            memset(p,0,sizeof(p));
            memset(map,0,sizeof(map));
            scanf("%d",&m);
            for(int i=0;i<m;i++)
            {
                scanf("%d%d",&p[i].x,&p[i].y);
                map[p[i].x][p[i].y]=-1;
            }
            for(int i=0;i<m;i++) scanf("%d",&p[i].r);
            ans=99;
            dfs(0,0);
            printf("%d
    ",ans==99?-1:ans);
        }
        return 0;
    }
    


  • 相关阅读:
    个人总结
    第三次个人作业——用例图设计
    结对项目——第二次作业
    结对项目——第一次作业
    第二次个人编程作业
    第一次个人编程作业
    个人总结
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5201639.html
Copyright © 2011-2022 走看看