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

隨筆 - 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>
              欧美一区二区三区四区在线| 欧美日韩国产在线播放| 牛夜精品久久久久久久99黑人| 欧美激情视频网站| 欧美性片在线观看| 伊人色综合久久天天| 亚洲最新在线视频| 久久久成人网| 亚洲人成毛片在线播放| 亚洲欧美中文字幕| 欧美国产日韩一区| 国产日韩欧美一区在线 | 午夜影院日韩| 麻豆成人在线播放| 国产精品久久精品日日| 精品99一区二区| 亚洲在线免费| 另类激情亚洲| 亚洲免费观看视频| 欧美一区在线直播| 欧美精品情趣视频| 国产欧美日韩视频| 国内久久婷婷综合| 亚洲永久网站| 久久综合亚洲社区| 日韩西西人体444www| 久久aⅴ国产紧身牛仔裤| 欧美 日韩 国产 一区| 国产精品成人久久久久| 激情亚洲一区二区三区四区| 日韩一区二区免费高清| 久久精品国产99国产精品澳门| 亚洲成人直播| 亚洲专区一区| 欧美成人中文| 国产亚洲一级高清| 99热这里只有精品8| 久久精品色图| 亚洲精品国产系列| 久久精品国产清高在天天线| 欧美日韩视频在线第一区| 黄色成人av| 亚洲一区二区视频在线观看| 麻豆成人在线| 亚洲淫性视频| 欧美精品免费视频| 加勒比av一区二区| 欧美一区二区精美| 亚洲国产婷婷| 久久久91精品国产一区二区三区| 欧美国产亚洲精品久久久8v| 国产婷婷97碰碰久久人人蜜臀| 99精品视频免费在线观看| 欧美一区=区| 欧美大秀在线观看| 欧美一区二区高清在线观看| 欧美日韩伦理在线| 亚洲人久久久| 免费在线欧美视频| 欧美在线999| 国产精品女人久久久久久| 日韩一级成人av| 欧美成人乱码一区二区三区| 先锋影音网一区二区| 国产精品jvid在线观看蜜臀| 亚洲人成在线播放| 毛片精品免费在线观看| 欧美亚洲一区二区在线| 国产精品二区二区三区| 99视频一区二区| 亚洲电影av在线| 久久久久久久国产| 国产主播喷水一区二区| 欧美一级大片在线观看| 一本色道**综合亚洲精品蜜桃冫 | 美女国内精品自产拍在线播放| 亚洲一区二区在线免费观看| 欧美日韩午夜在线| 99在线精品免费视频九九视| 亚洲第一在线综合在线| 免费黄网站欧美| 在线观看视频一区二区| 久久婷婷丁香| 午夜视频精品| 国产精品视频yy9099| 欧美一区影院| 亚洲在线免费视频| 国产精品一区二区黑丝| 性欧美长视频| 亚洲欧美精品在线观看| 国产嫩草影院久久久久| 性欧美暴力猛交另类hd| 亚洲欧美日本精品| 国产欧美一区二区精品秋霞影院 | 欧美成人国产一区二区| 久久字幕精品一区| 亚洲国产日日夜夜| 亚洲欧洲美洲综合色网| 欧美日韩亚洲三区| 亚洲欧美一区二区在线观看| 亚洲调教视频在线观看| 国产欧美日韩精品专区| 久久久久久亚洲精品杨幂换脸| 久久精品国产免费观看| 亚洲福利视频网| 亚洲激情婷婷| 欧美日韩国产首页在线观看| 亚洲影视中文字幕| 午夜日韩福利| 伊人精品在线| 最新亚洲一区| 欧美日韩另类综合| 久久精品国产2020观看福利| 久久电影一区| 亚洲精品久久久久久久久| 亚洲青色在线| 国产精品午夜在线| 狼人社综合社区| 欧美国产精品| 亚洲视频在线一区观看| 亚洲一区二区三区高清| 黄色小说综合网站| 91久久精品久久国产性色也91| 欧美无乱码久久久免费午夜一区| 午夜亚洲福利在线老司机| 久久国产天堂福利天堂| 最新69国产成人精品视频免费| 日韩视频中午一区| 国产一本一道久久香蕉| 亚洲国产毛片完整版| 国产精品乱人伦中文| 另类图片国产| 欧美三级网址| 美女视频网站黄色亚洲| 欧美日本国产精品| 久久久国产精品一区二区中文| 欧美二区在线| 午夜免费久久久久| 免费看的黄色欧美网站| 亚洲欧美综合网| 久久这里只有| 午夜欧美大片免费观看| 免费成人毛片| 欧美亚洲视频| 女同一区二区| 久久国产天堂福利天堂| 欧美精品一区视频| 久久裸体视频| 欧美网站在线观看| 欧美成在线观看| 国产精品午夜国产小视频| 亚洲国产免费看| 国产视频在线观看一区二区| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲视频一区二区在线观看 | 国内揄拍国内精品久久| 日韩视频永久免费| 在线观看中文字幕亚洲| 亚洲在线播放| 9人人澡人人爽人人精品| 久久久久久久波多野高潮日日| 一区二区福利| 久久一区二区精品| 久久久久久久999| 国产精品国产三级国产专播品爱网| 欧美高清影院| 国产真实乱子伦精品视频| 中日韩美女免费视频网址在线观看| 亚洲激情另类| 久久精品伊人| 欧美一区二区三区免费看| 欧美区高清在线| 欧美成人官网二区| 激情综合自拍| 欧美一区二区三区久久精品| 亚洲校园激情| 欧美日本高清视频| 亚洲国产精品一区二区www在线| 狠狠久久亚洲欧美专区| 欧美在线观看视频一区二区三区 | 亚洲精品国产精品乱码不99按摩| 国产综合自拍| 99这里有精品| av72成人在线| 欧美激情视频一区二区三区不卡| 免费观看成人| 一区在线播放视频| 午夜免费日韩视频| 亚洲欧美色一区| 欧美日韩精品在线观看| 91久久综合亚洲鲁鲁五月天| 91久久久久| 久久精品国产一区二区三区免费看 | 欧美成人中文字幕在线| 尤妮丝一区二区裸体视频| 午夜精品久久久久久久99热浪潮| 亚洲视频一二三| 欧美特黄一区| 亚洲婷婷在线| 香蕉久久久久久久av网站|