hdu 4462 Scaring the Birds # 暴力枚举(状压)

来源:互联网 发布:双色球红球246算法 编辑:程序博客网 时间:2024/05/22 03:52


其实是枚举的水题,也是当年regional的签到题,然而我卡了一个小时,啊啊啊啊啊啊啊

暴力枚举,可以用状压表示状态就是2^10,其他也没什么了

#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>#include <cmath>using namespace std;struct node{    int x , y , r ;    //node(int x , int y , int r):x(x) ,y(y),r(r){}    bool operator < ( const node & k ) const {        return r < k.r ;    }};node save[20] , temp[20];bool pic[200][200] ;int n , res;int get_bit(int x){    int ans = 0 ;    while(x){        if(x & 1) ans ++ ;        x >>= 1 ;    }    return ans ;}void work(int x){    int bit = get_bit(x) ;    if(bit >= res) return ;    int pos = 0 , tpos = 0 ;    while(x){        if(x & 1) temp[pos++] = save[tpos] ;        x >>= 1 , tpos ++ ;    }    int k ;    for(int i = 1 ; i <= n ; i ++ ){        for(int j = 1 ; j <= n ; j ++ ){            if( pic[i][j] ) continue ;            for(k = 0 ; k < pos ; k ++ ){                //cout << temp[i].x << " " << temp[i].y << "     " ;                if( fabs(i - temp[k].x )+ fabs(j - temp[k].y)  <= temp[k].r )  break ;            }            //cout << k << endl ;            if( k >= pos ) return ;        }    }    //cout << 25423;    res = bit ;}int main(){    int point , a , b , r;    while( ~ scanf("%d" , &n) && n ){        scanf("%d" , &point) ;memset(pic , 0 , sizeof(pic)) ;        for(int i = 0 ; i < point ; i ++){            scanf("%d %d" , &a , &b);            save[i].x = a , save[i].y = b ;            pic[a][b] = true ;        }        for(int i = 0 ; i < point ; i ++ ){            scanf("%d" , &r) ;            save[i].r = r ;        }        res = 100 ;        work( (1<<point)- 1 ) ;        if(res == 100 ){ printf("-1\n") ; continue ; }        for(int i = 1 ; i < (1<<(point)) ; i = i<<1 )work(i) ;        for(int i = 0 ; i < (1<<(point)) ; i ++ )    work(i) ;        printf("%d\n" , res ) ;    }    return 0 ;}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 跟老公吵架打电话不接怎么办 起诉离婚对方不接电话怎么办 苹果手机接电话声音小怎么办 老公不回你微信怎么办 工地欠货款不给怎么办 朋友微信借钱不还怎么办 微信上借钱不还怎么办 微信借钱不还怎么办 微信转账借钱不还怎么办 没欠条人家欠钱不给怎么办 欠货款被告没去怎么办 别人欠我钱不接电话怎么办 借给别人钱不接电话怎么办 欠钱的人玩消失怎么办 被婚介所骗了5万怎么办 贷款紧急联系人被骚扰怎么办 微信限制加好友怎么办 珍爱网的客服老打电话怎么办 百合网的人气是怎么办 苹果x来电不显示怎么办 苹果8黑屏没反应怎么办 苹果六s开不了机怎么办 苹果6s突然黑屏怎么办 苹果6s黑屏了怎么办 苹果6s手机黑屏打不开怎么办 苹果6sp手机死机怎么办 苹果6s打不开机怎么办 6s开不了机怎么办 lg背光灯坏了怎么办 苹果6s屏幕变黄怎么办 苹果8背光坏了怎么办 苹果六背光坏了怎么办 苹果5s蓝屏死机怎么办 苹果6s突然黑屏怎么办? 苹果6s经常死机怎么办 苹果6s没有背光怎么办 苹果7白屏死机怎么办 苹果6p屏膜失灵怎么办 苹果7p屏幕卡死怎么办 苹果7p手机死机怎么办 苹果6s死机了怎么办啊