• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            poj3020

            Antenna Placement
            Time Limit: 1000MS Memory Limit: 65536K
            Total Submissions: 4127 Accepted: 2032

            Description

            The Global Aerial Research Centre has been allotted the task of building the fifth generation of mobile phone nets in Sweden. The most striking reason why they got the job, is their discovery of a new, highly noise resistant, antenna. It is called 4DAir, and comes in four types. Each type can only transmit and receive signals in a direction aligned with a (slightly skewed) latitudinal and longitudinal grid, because of the interacting electromagnetic field of the earth. The four types correspond to antennas operating in the directions north, west, south, and east, respectively. Below is an example picture of places of interest, depicted by twelve small rings, and nine 4DAir antennas depicted by ellipses covering them.

            Obviously, it is desirable to use as few antennas as possible, but still provide coverage for each place of interest. We model the problem as follows: Let A be a rectangular matrix describing the surface of Sweden, where an entry of A either is a point of interest, which must be covered by at least one antenna, or empty space. Antennas can only be positioned at an entry in A. When an antenna is placed at row r and column c, this entry is considered covered, but also one of the neighbouring entries (c+1,r),(c,r+1),(c-1,r), or (c,r-1), is covered depending on the type chosen for this particular antenna. What is the least number of antennas for which there exists a placement in A such that all points of interest are covered?

            Input

            On the first row of input is a single positive integer n, specifying the number of scenarios that follow. Each scenario begins with a row containing two positive integers h and w, with 1 <= h <= 40 and 0 < w <= 10. Thereafter is a matrix presented, describing the points of interest in Sweden in the form of h lines, each containing w characters from the set ['*','o']. A '*'-character symbolises a point of interest, whereas a 'o'-character represents open space.

            Output

            For each scenario, output the minimum number of antennas necessary to cover all '*'-entries in the scenario's matrix, on a row of its own.

            Sample Input

            2
            7 9
            ooo**oooo
            **oo*ooo*
            o*oo**o**
            ooooooooo
            *******oo
            o*o*oo*oo
            *******oo
            10 1
            *
            *
            *
            o
            *
            *
            *
            *
            *
            *
            

            Sample Output

            17
            5
             
            思路:二分圖匹配,最小路徑覆蓋,建圖是按自己的感覺建的相鄰的兩個連邊,(v,u),(u,v)都加到圖里面,然后最大匹配就是原先的兩倍(不明白)
            再然后答案是總點數n-匹配數x
            若最大匹配為X,已蓋點(指的是兩個一組被一個基站覆蓋)個數=2*x,未蓋點=sum(總點數)-已蓋點=sum-2*x應為未蓋點肯定是單的,
            所以覆蓋未蓋點的基站個數肯定與未蓋點個數一樣=sum-s*x所以總的基站數為  x+sum-2*x=sum-x
            代碼
             1#include<stdio.h>
             2#include<string.h>
             3#include<math.h>
             4#define MAXSIZE 405
             5int dd[4][2]= {{-1,0},{1,0},{0,1},{0,-1}};
             6int result[MAXSIZE+1];
             7short data[MAXSIZE+1][MAXSIZE+1],state[MAXSIZE+1];
             8int h[45][20];
             9int n,m,sum,ans;
            10char map[45][20];
            11void init()
            12{
            13    int i,j,k;
            14    int xx,yy;
            15    sum=0;
            16    memset(result,0,sizeof(result));
            17    memset(data,0,sizeof(data));
            18    scanf("%d%d",&n,&m);
            19    for (i=0; i<n ; i++ )
            20    {
            21        scanf("%s",&map[i]);
            22        for (j=0; j<m ; j++ )
            23            if (map[i][j]=='*')
            24            {
            25                sum++;
            26                h[i][j]=sum;
            27            }

            28    }

            29    for (i=0; i<n ; i++)
            30        for (j=0; j<m; j++)
            31            if (map[i][j]=='*')
            32            {
            33                for (k=0; k<=3; k++)
            34                {
            35                    xx=i+dd[k][0];
            36                    yy=j+dd[k][1];
            37                    if (xx>=0&&yy>=0&&xx<n&&yy<m&&map[xx][yy]=='*')
            38                        data[h[i][j]][h[xx][yy]]=1;
            39                }

            40            }

            41}

            42int find(int a)
            43{
            44    int i;
            45    for (i=1; i<=sum ; i++ )
            46    {
            47        if (data[a][i]==1&&!state[i])
            48        {
            49            state[i]=1;
            50            if (result[i]==0||find(result[i]))
            51            {
            52                result[i]=a;
            53                return 1;
            54            }

            55        }

            56    }

            57    return 0;
            58}

            59int main()
            60{
            61    int t,i,j;
            62    scanf("%d",&t);
            63    for (i=1; i<=t ; i++ )
            64    {
            65        ans=0;
            66        init();
            67        for (j=1; j<=sum ; j++ )
            68        {
            69            memset(state,0,sizeof(state));
            70            if (find(j)) ans++;
            71        }

            72        printf("%d\n",sum-ans/2);
            73    }

            74    return 0;
            75}

            76

             

            posted on 2012-02-02 12:56 jh818012 閱讀(181) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            久久久久久国产精品美女| 久久99精品国产麻豆宅宅| 国产精品久久永久免费| 久久精品嫩草影院| 伊色综合久久之综合久久| 99久久夜色精品国产网站 | 色老头网站久久网| 色欲综合久久中文字幕网 | 久久人人爽人人爽人人爽| 久久久久久国产精品无码下载| 97久久香蕉国产线看观看| 久久国产成人| 国产精品久久影院| 亚洲综合伊人久久综合| 精品无码人妻久久久久久| 中文无码久久精品| 青春久久| 国产精品免费久久久久电影网| 久久国产欧美日韩精品| 久久精品国产一区二区三区日韩| 久久久受www免费人成| 粉嫩小泬无遮挡久久久久久 | 久久强奷乱码老熟女网站| 亚洲一区二区三区日本久久九| 一本久久a久久精品亚洲| 蜜桃麻豆www久久国产精品| 18岁日韩内射颜射午夜久久成人 | 中文字幕乱码人妻无码久久| 久久精品国产99久久久香蕉| 久久免费视频观看| 国产成年无码久久久久毛片| 久久精品中文闷骚内射| 久久久噜噜噜久久中文福利| 久久久亚洲裙底偷窥综合 | 日韩人妻无码精品久久久不卡| 亚洲国产成人久久综合一区77| 久久天天躁狠狠躁夜夜2020| 狠狠人妻久久久久久综合| 国産精品久久久久久久| 久久国产热这里只有精品| 久久不见久久见免费影院www日本|