青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 87  文章 - 279  trackbacks - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊(cè)

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220984
  • 排名 - 118

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

Antenna Placement
Time Limit:1000MS? Memory Limit:65536K
Total Submit:380 Accepted:125

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

Source
Svenskt M?sterskap i Programmering/Norgesmesterskapet 2001

myCode:

#include? < iostream >
using ? namespace ?std;

const ? int ?INF? = ? 1 ? << ? 28 ;

int ?n,?r,?c;
int ?e[ 11 ]? = ? { 1 ,? 2 ,? 4 ,? 8 ,? 16 ,? 32 ,? 64 ,? 128 ,? 256 ,? 512 ,? 1024 } ;
char ?m[ 50 ][ 20 ];
int ?d[ 50 ][ 1024 ];
int ?b[ 20 ];
int ?cc[ 20 ];
int ?ss;

void ?Try( int ?x,? int ?s)
{
????
if ?(x? >= ?c)? {
????????
int ?k? = ? 0 ;
????????
for ?( int ?i = 0 ;?i < c;?i ++ )? {
????????????k?
+= ?b[i]? * ?e[i];
????????}

????????
if ?(d[ 0 ][k]? == ? - 1 ? || ?d[ 0 ][k]? > ?s)
????????????d[
0 ][k]? = ?s;
????????
return ?;
????}

????
if ?(m[ 0 ][x]? == ? ' o ' )? {
????????Try(x
+ 1 ,?s);
????}
? else ? if ?(m[ 0 ][x]? == ? ' * ' )? {
????????
int ?t1? = ?b[x],?t2? = ?b[x + 1 ],?t3? = ?s;
????????b[x]?
= ? 1 ;?b[x + 1 ]? = ? 1 ;?s? += ? 1 ;
????????Try(x
+ 2 ,?s);
????????b[x]?
= ?t1;?b[x + 1 ]? = ?t2;?s? = ?t3;
????????
if ?(r? != ? 1 ? || ?m[ 0 ][x]? == ? ' o ' )?Try(x + 1 ,?s);
????}
??
}


void ?DFS( int ?i,? int ?x,? int ?s)
{
????
if ?(x? >= ?c)? {
????????
int ?k? = ? 0 ;
????????
for ?( int ?j = 0 ;?j < c;?j ++ )? {
????????????k?
+= ?cc[j]? * ?e[j];
????????}

????????
if ?(d[i][k]? == ? - 1 ? || ?d[i][k]? > ?ss? + ?s)
????????????d[i][k]?
= ?ss? + ?s;
????????
return ?;
????}

????
if ?(b[x]? == ? 0 )? {
????????
if ?(m[i - 1 ][x]? == ? ' * ' )? {
????????????cc[x]?
= ? 1 ;?s? += ? 1 ;
????????????DFS(i,?x
+ 1 ,?s);
????????}
? else ? {
????????????
if ?(m[i][x]? == ? ' * ' )? {
????????????????
int ?t1? = ?cc[x],?t2? = ?cc[x + 1 ],?t3? = ?s;
????????????????cc[x]?
= ? 1 ;??cc[x + 1 ]? = ? 1 ;?s? += ? 1 ;
????????????????
if ?(b[x + 1 ]? == ? 0 ? && ?m[i - 1 ][x + 1 ]? == ? ' * ' )
????????????????????s?
+= ? 1 ;
????????????????DFS(i,?x
+ 2 ,?s);
????????????????cc[x]?
= ?t1;?cc[x + 1 ]? = ?t2;?s? = ?t3;
????????????????
if ?(i? != ?r - 1 ? || ?m[i][x]? == ? ' o ' )?DFS(i,?x + 1 ,?s);
????????????}
? else ? if ?(m[i][x]? == ? ' o ' )? {
????????????????DFS(i,?x
+ 1 ,?s);
????????????}

????????}

????}
? else ? {
????????????
if ?(m[i][x]? == ? ' * ' )? {
????????????????
int ?t1? = ?cc[x],?t2? = ?cc[x + 1 ],?t3? = ?s;
????????????????cc[x]?
= ? 1 ;??cc[x + 1 ]? = ? 1 ;?s? += ? 1 ;
????????????????
if ?(b[x + 1 ]? == ? 0 ? && ?m[i - 1 ][x + 1 ]? == ? ' * ' )
????????????????????s?
+= ? 1 ;
????????????????DFS(i,?x
+ 2 ,?s);
????????????????cc[x]?
= ?t1;?cc[x + 1 ]? = ?t2;?s? = ?t3;
????????????????
if ?(i? != ?r - 1 ? || ?m[i][x]? == ? ' o ' )?DFS(i,?x + 1 ,?s);
????????????}
? else ? if ?(m[i][x]? == ? ' o ' )? {
????????????????DFS(i,?x
+ 1 ,?s);
????????????}
??????
????}

}


void ?init()
{
????memset(d[
0 ],? - 1 ,? sizeof (d[ 0 ]));
????memset(b,?
0 ,? sizeof (b));
????Try(
0 ,? 0 );
}


void ?Solve()?
{
????
int ?i,?j,?k;
????init();
????
for ?(i = 0 ;?i < r - 1 ;?i ++ )? {
????????memset(d[i
+ 1 ],? - 1 ,? sizeof (d[i + 1 ]));
????????
for ?(k = 0 ;?k < e[c];?k ++ )? {
????????????
if ?(d[i][k]? != ? - 1 )? {
????????????????
int ?t? = ?k,?j? = ? 0 ,?kk? = ? 0 ;
????????????????memset(b,?
0 ,? sizeof (b));
????????????????memset(cc,?
0 ,? sizeof (cc));
????????????????
while ?(t? != ? 0 )? {
????????????????????b[j
++ ]? = ?t? % ? 2 ;
????????????????????t?
/= ? 2 ;
????????????????}

????????????????ss?
= ?d[i][k];
????????????????DFS(i
+ 1 ,? 0 ,? 0 );
????????????}

????????}

????}

????
int ?ans? = ?INF;
????
for ?(k = 0 ;?k < e[c];?k ++ )? {
????????
if ?(d[r - 1 ][k]? != ? - 1 ? && ?d[r - 1 ][k]? < ?ans)? {
????????????ans?
= ?d[r - 1 ][k];
????????}

????}

????cout?
<< ?ans? << ?endl;
}


int ?main()
{?
????cin?
>> ?n;
????
while ?(n -- ? != ? 0 )? {
????????cin?
>> ?r? >> ?c;
????????
for ?( int ?i = 0 ;?i < r;?i ++ )?cin? >> ?m[i];
????????Solve();
????}

????system(
" pause " );
????
return ? 0 ;
}


ghost_wei大牛的code,? 放出來(lái)供大家學(xué)習(xí),? 用了滾動(dòng)數(shù)組優(yōu)化, 而且位運(yùn)算用得出神入化:)
#include<iostream.h>
#include?
<fstream.h>
const?int?k2[11]={1,2,4,8,16,32,64,128,256,512,1024};
int?n,m,c[2][1024];
char?d[40][10];
inline?
void?min(int?&i,int?j)
{
????
if?(i>j)?i=j;
}

void?work()
{
????
int?i,j,km,k,e7,e8,l,t,ans;
????km
=k2[m];
????
for?(i=0;i<km;i++)?c[0][i]=100000;
????c[
0][0]=0;
????e7
=0;?e8=1;
????
for?(i=0;i<n;i++)
????
{
????????
for?(j=0;j<km;j++)?c[e8][j]=100000;
????????
for?(j=1;j<m;j++)
????????????
if?(d[i][j]=='*')
????????????????
for?(k=0;k<km;k++)
????????????????????min(c[e7][k
|k2[j]|k2[j-1]],c[e7][k]+1);
????????
for?(k=0;k<km;k++)
????????
{
????????????l
=0;?t=0;
????????????
for?(j=0;j<m;j++)?
????????????????
if?(!(k&k2[j])&&d[i][j]=='*')
????????????????
{
????????????????????l
+=k2[j];
????????????????????t
++;
????????????????}

????????????min(c[e8][l],c[e7][k]
+t);
????????}

????????e7
=e7^1;?e8=e8^1;
????}

????ans
=100000;
????
for?(k=0;k<km;k++)
????????min(ans,c[e7][k]);
????cout
<<ans<<endl;
}

int?main()
{
????
int?tc,cas,i,j;
????cin
>>tc;
????
for?(cas=1;cas<=tc;cas++)
????
{
????????cin
>>n>>m;
????????
for?(i=0;i<n;i++)
????????????
for(j=0;j<m;j++)
????????????????cin
>>d[i][j];
????????work();
????}

????
return?0;
}

posted on 2006-10-18 17:29 閱讀(2158) 評(píng)論(4)  編輯 收藏 引用 所屬分類: ACM題目

FeedBack:
# re: 狀態(tài)壓縮DP, pku3020[未登錄](méi) 2007-04-30 11:16 Leon
Ghost的算法真是精辟,只是狀態(tài)數(shù)組定義的空間可能會(huì)不夠,代碼的line 30  回復(fù)  更多評(píng)論
  
# re: 狀態(tài)壓縮DP, pku3020 2007-06-30 10:35 姜雨生
真是太好了
以后多向你請(qǐng)教  回復(fù)  更多評(píng)論
  
# re: 狀態(tài)壓縮DP, pku3020[未登錄](méi) 2008-07-02 08:22 菜鳥
大牛解釋一下這一段吧:
for (i=0;i<n;i++)
{
for (j=0;j<km;j++) c[e8][j]=100000;
for (j=1;j<m;j++)
if (d[i][j]=='*')
for (k=0;k<km;k++)
min(c[e7][k|k2[j]|k2[j-1]],c[e7][k]+1);
for (k=0;k<km;k++)
{
l=0; t=0;
for (j=0;j<m;j++)
if (!(k&k2[j])&&d[i][j]=='*')
{
l+=k2[j];
t++;
}
min(c[e8][l],c[e7][k]+t);
}
e7=e7^1; e8=e8^1;
}
  回復(fù)  更多評(píng)論
  
# re: 狀態(tài)壓縮DP, pku3020 2008-08-04 22:56 ecnu
二分匹配做的。。關(guān)鍵是狀態(tài)壓縮不會(huì)。5555...  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              免费观看日韩av| 欧美大片一区二区| 亚洲午夜女主播在线直播| 欧美日韩国产美女| 亚洲欧美在线aaa| 亚洲欧美欧美一区二区三区| 国产精品亚发布| 久久久久久91香蕉国产| 久久精品国产99国产精品| 亚洲国产精品999| 亚洲美女黄网| 国产日韩精品一区二区三区在线 | 亚洲国产精品久久精品怡红院| 麻豆av福利av久久av| 蜜桃视频一区| 亚洲小视频在线| 欧美在线免费看| 亚洲精品欧美专区| 亚洲一区二区在线免费观看视频 | 欧美成人午夜剧场免费观看| 在线视频精品一区| 欧美一区二区在线观看| 亚洲国产欧美日韩| 在线视频你懂得一区| 伊人久久亚洲影院| 一区二区三区高清视频在线观看| 国产字幕视频一区二区| 亚洲国产精品久久久久| 国产精品久久久久久福利一牛影视| 久久久亚洲高清| 欧美日韩中国免费专区在线看| 欧美在线视频免费播放| 欧美激情四色| 久久中文在线| 国产精品久久久999| 欧美高清hd18日本| 国产有码在线一区二区视频| 亚洲六月丁香色婷婷综合久久| 狠狠色噜噜狠狠色综合久 | 麻豆精品视频| 国产精品久久久久久久久婷婷| 噜噜爱69成人精品| 国产精品久久一卡二卡| 亚洲日本在线观看| 有码中文亚洲精品| 性欧美videos另类喷潮| 在线亚洲欧美视频| 欧美国产高潮xxxx1819| 久久久久这里只有精品| 国产精品影片在线观看| 99riav国产精品| 亚洲精品社区| 美女精品视频一区| 浪潮色综合久久天堂| 国产精品自拍在线| 国产精品99久久久久久人| 亚洲人成网站色ww在线| 久久久久久久波多野高潮日日 | 99视频+国产日韩欧美| 久久综合久久久久88| 久久最新视频| 黄色精品在线看| 欧美中文字幕视频在线观看| 欧美在线啊v| 国产欧美日韩视频| 午夜精品久久久久久久久久久 | 国产伪娘ts一区| 亚洲免费视频观看| 久久成人精品无人区| 国产精品视频精品| 亚洲欧美日韩一区二区| 欧美与黑人午夜性猛交久久久| 国产免费成人在线视频| 午夜精品福利在线观看| 久久精品亚洲精品| 在线国产亚洲欧美| 欧美成人xxx| 日韩视频专区| 欧美亚洲午夜视频在线观看| 国产午夜亚洲精品羞羞网站| 亚洲欧美99| 牛夜精品久久久久久久99黑人 | 国产精品羞羞答答| 欧美在线国产| 欧美激情亚洲精品| 一区二区三区久久精品| 国产精品久久久一本精品| 篠田优中文在线播放第一区| 久久综合一区二区三区| 亚洲伦理一区| 国产欧美一区二区精品婷婷| 久久久久中文| 99re成人精品视频| 久久免费少妇高潮久久精品99| 激情久久综合| 欧美日韩直播| 久久嫩草精品久久久久| 亚洲精品久久在线| 久久久精品网| 99视频精品全部免费在线| 国产欧美日韩精品在线| 你懂的视频一区二区| 中文国产成人精品| 男人天堂欧美日韩| 亚洲欧美激情一区二区| 亚洲精美视频| 国产伦精品一区二区三| 欧美人交a欧美精品| 亚洲欧美精品伊人久久| 亚洲欧洲一区二区三区久久| 久久er精品视频| 亚洲乱码国产乱码精品精98午夜| 国产视频观看一区| 欧美日韩美女在线观看| 久久久久国产精品厨房| 亚洲影视综合| 亚洲精品日韩精品| 麻豆成人在线观看| 欧美在线免费一级片| 亚洲午夜免费福利视频| 亚洲国产美女久久久久| 国产一区视频观看| 国产精品久久久久77777| 欧美电影在线播放| 久久午夜电影| 久久国产精品亚洲va麻豆| 亚洲视频狠狠| 99精品国产在热久久下载| 亚洲高清三级视频| 欧美成在线观看| 可以免费看不卡的av网站| 欧美在线亚洲| 性欧美办公室18xxxxhd| 中文精品视频一区二区在线观看| 亚洲激情社区| 亚洲高清123| 亚洲成人资源网| 一区二区三区在线免费视频| 国产日韩欧美综合一区| 国产精品网站视频| 国产精品人人做人人爽| 国产精品草草| 国产精品你懂的在线欣赏| 欧美日韩免费视频| 欧美日韩一区二区三区| 欧美三级乱人伦电影| 国产精品二区二区三区| 国产精品久久久久久久免费软件| 欧美日韩中文字幕| 国产精品电影网站| 国产精品视频| 韩国av一区二区三区四区| 国内揄拍国内精品久久| 精品成人一区| 91久久国产综合久久| 亚洲精品少妇30p| 亚洲深夜激情| 欧美制服丝袜第一页| 欧美在线视频网站| 欧美a级理论片| 亚洲精品欧美极品| 亚洲视频在线观看一区| 欧美一区中文字幕| 久热精品在线视频| 欧美日韩成人| 国产情人综合久久777777| 激情婷婷欧美| 一本大道久久a久久精品综合| 亚洲午夜精品久久久久久浪潮| 亚洲欧美日本精品| 麻豆精品国产91久久久久久| 亚洲激情在线视频| 亚洲一区二区三区在线| 欧美在线视频一区二区三区| 欧美成人免费全部观看天天性色| 欧美日韩美女一区二区| 国产日韩欧美成人| 亚洲精品一区二区三区在线观看| 亚洲午夜一区二区| 裸体一区二区| 亚洲影院污污.| 欧美va天堂在线| 国产日韩欧美一区| 在线亚洲一区| 欧美电影在线| 香蕉精品999视频一区二区| 欧美多人爱爱视频网站| 国产欧美日韩| 夜色激情一区二区| 久久香蕉精品| 亚洲一区影音先锋| 欧美国产日韩一区二区三区| 国产一区白浆| 亚洲影音先锋| 最新亚洲一区| 免费成人高清视频| 国外成人在线| 久久国产精品免费一区| 日韩视频免费在线| 美女日韩在线中文字幕|