hdu 4462 Scaring the Birds(暴力,细读)

来源:互联网 发布:h5建站源码 编辑:程序博客网 时间:2024/06/05 14:24

题意:http://acm.hdu.edu.cn/showproblem.php?pid=4462

我想说,这道题不是考验数据结构或是神马复杂的算法,就是考验人的阅读能力和思维的缜密。有两点:第一点都能看出来,当k=0时不能保护已有的庄稼;第二点,当k=n*n时,即所有的点都是没有庄稼的,直接输出0.

#include <iostream>#include<cstdio>#include<cstring>using namespace std;int n,k;   //2^16=65536bool tag[55][55];int sec[11][2],r[11];bool chao(int a,int b){    return (a<1||a>n||b<1||b>n);}void cover(int x,int y,int r){    for(int j=y-r;j<=y+r;j++){        if(chao(x,j))continue;        tag[x][j]=1;    }    for(int i=x-r;i<x;i++){        for(int j=y;j<=y+i-x+r;j++){            if(chao(i,j));            else tag[i][j]=1;            if(chao(2*x-i,j));            else tag[2*x-i][j]=1;            if(chao(i,y-(j-y)));            else tag[i][2*y-j]=1;            if(chao(2*x-i,2*y-j));            else tag[2*x-i][2*y-j]=1;        }    }}bool ok(){    for(int i=1;i<=n;i++){        for(int j=1;j<=n;j++){            if(tag[i][j]==0)return 0;        }    }    return 1;}void showtag(){    for(int i=1;i<=n;i++){        for(int j=1;j<=n;j++)cout<<tag[i][j]<<" ";        cout<<endl;    }}void intial(){    for(int i=1;i<=k;i++){        tag[sec[i][0]][sec[i][1]]=1;    }}int main(){    //freopen("cin.txt","r",stdin);    while(cin>>n&&n){        scanf("%d",&k);        memset(sec,0,sizeof(sec));        memset(r,0,sizeof(r));        for(int i=1;i<=k;i++)scanf("%d%d",&sec[i][0],&sec[i][1]);        for(int i=1;i<=k;i++)scanf("%d",&r[i]);        int length=1<<k,ans=0x3f3f3f3f;        for(int i=0;i<length;i++){            memset(tag,0,sizeof(tag));            intial();            //showtag();            if(ok()){                ans=0;                break;            }            int sum=0;            for(int j=1;j<=k;j++){                if((i>>(j-1))&1){                    sum++;                    cover(sec[j][0],sec[j][1],r[j]);                }            }            //cout<<"sum: "<<sum<<endl;            if(ok())ans=ans<sum?ans:sum;        }        if(ans>k)printf("-1\n");        else printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击