• <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>
            posts - 20,  comments - 6,  trackbacks - 0
              1 #include<iostream>
              2 #include<cstdio>
              3 #include<cstring>
              4 #include<queue>
              5 using namespace std;
              6 char map[21][21];
              7 int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
              8 bool hash[21][21][10000];
              9 struct man{
             10     int x,y;
             11     bool key[10];
             12     int t;
             13 };
             14 int si,sj,ei,ej;
             15 int n,m,t;
             16 bool succ;
             17 queue<man>zero;
             18 int main()
             19 {
             20     int i,j,k,ti;
             21     int hh,hh2;
             22     man head,p;
             23     while(scanf("%d%d%d",&n,&m,&t)!=EOF)
             24     {
             25         memset(map,0,sizeof(map));
             26         memset(hash,0,sizeof(hash));
             27         for(i=0;i<n;i++)
             28         {
             29             scanf("%s",map[i]);
             30             for(j=0;j<m;j++)
             31             {
             32                 if(map[i][j]=='@')
             33                 {
             34                     hash[i][j][0]=1;
             35                     si=i;
             36                     sj=j;
             37                     map[i][j]='.';
             38                 }
             39                 if(map[i][j]=='^')
             40                 {
             41                     ei=i;
             42                     ej=j;
             43                     map[i][j]='.';
             44                 }
             45             }
             46         }
             47         head.t=0;
             48         head.x=si;
             49         head.y=sj;
             50         memset(head.key,0,sizeof(head.key));
             51         while(!zero.empty())
             52         zero.pop();
             53         zero.push(head);
             54         succ=0;
             55         ti=99999;
             56         while(!zero.empty())
             57         {
             58             head=zero.front();
             59             zero.pop();
             60             if(head.t==t)
             61             {
             62                 if(head.x==si&&head.y==sj)
             63                 {
             64                     head.t=0;
             65                         hh2=0;
             66                         for(int jj=0;jj<10;jj++)
             67                         {
             68                             if(head.key[jj])
             69                             hh2+=1<<(jj);
             70                         }
             71                         if(hash[si][sj][hh2]==0)
             72                         {
             73                               hash[si][sj][hh2]=1;
             74                             zero.push(head);
             75                         }
             76                     continue;
             77                 }else
             78                 continue;
             79             }
             80             if(head.x==ei&&head.y==ej)
             81             {
             82                 if(head.t<t)
             83                 {
             84                 succ=1;
             85                 ti=head.t;
             86                 break;
             87                 }else
             88             continue;
             89             }
             90             int x,y;
             91             for(i=0;i<4;i++)
             92             {
             93                 x=dir[i][0]+head.x;
             94                 y=dir[i][1]+head.y;
             95                 if(x>=n||y>=m||x<0||y<0||map[x][y]=='*')
             96                 continue;
             97                 hh=0;
             98                 for(int jj=0;jj<10;jj++)
             99                 {
            100                     if(head.key[jj])
            101                     hh+=1<<(jj);
            102                     p.key[jj]=head.key[jj];
            103                 }
            104              if(map[x][y]=='.'&&hash[x][y][hh]==0)
            105                 {
            106                     p.x=x;
            107                     p.y=y;
            108                     p.t=head.t+1;
            109                     hash[x][y][hh]=1;
            110                     if(p.t<t||(p.t==t&&p.x==si&&p.y==sj))
            111                     zero.push(p);
            112                 }
            113                 if(map[x][y]>='a'&&map[x][y]<='j')
            114                 {
            115                     if(head.key[map[x][y]-'a']&&hash[x][y][hh]==0)
            116                     {
            117                         p.x=x;
            118                         p.y=y;
            119                         p.t=head.t+1;
            120                         hash[x][y][hh]=1;
            121                         if(p.t<t||(p.t==t&&p.x==si&&p.y==sj))
            122                         zero.push(p);
            123                     }
            124                     else if(!head.key[map[x][y]-'a']&&hash[x][y][hh+1<<(map[x][y]-'a')]==0)
            125                     {
            126                         p.key[map[x][y]-'a']=1;
            127                            hh+=1<<(map[x][y]-'a');
            128                         hash[x][y][hh]=1;
            129                         p.x=x;
            130                         p.y=y;
            131                         p.t=head.t+1;
            132                         if(p.t<t||(p.t==t&&p.x==si&&p.y==sj))
            133                         zero.push(p);
            134                     }
            135                 }
            136                 if(map[x][y]>='A'&&map[x][y]<='J'&&hash[x][y][hh]==0&&head.key[map[x][y]-'A'])
            137                 {
            138                     hash[x][y][hh]=1;
            139                     p.x=x;
            140                     p.y=y;
            141                     p.t=head.t+1;
            142                     if(p.t<t||(p.t==t&&p.x==si&&p.y==sj))
            143                     zero.push(p);
            144                 }
            145             }
            146         }
            147         if(succ)
            148         printf("%d\n",ti);
            149         else
            150         printf("-1\n");
            151     }
            152 }
            153                     
            154                 

            posted on 2009-02-21 19:29 混沌的云 閱讀(451) 評論(2)  編輯 收藏 引用

            FeedBack:
            # re: HDU1429勝利大逃亡(續)!終于過了,順便學了位壓縮
            2009-05-06 09:40 | phk
            你有沒有ac過 感覺有點問題  回復  更多評論
              
            # re: HDU1429勝利大逃亡(續)!終于過了,順便學了位壓縮
            2009-05-06 14:32 | 混沌的云
            @phk
            ac了的  回復  更多評論
              
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            欧洲精品久久久av无码电影| 成人久久精品一区二区三区| 欧美日韩精品久久免费| 伊人久久大香线蕉av不卡| 性做久久久久久久| 久久精品国产精品亚洲精品| 国内精品久久久久国产盗摄| 日本亚洲色大成网站WWW久久 | 久久国产精品二国产精品| 午夜视频久久久久一区 | 久久精品国产精品亚洲人人| 中文字幕无码久久久| 久久久久亚洲av无码专区 | 色综合久久久久| 久久综合九色欧美综合狠狠| 国产美女亚洲精品久久久综合| 国产精品久久亚洲不卡动漫| 久久综合九色欧美综合狠狠| 69久久夜色精品国产69| 久久婷婷色香五月综合激情| 久久久久四虎国产精品| 三级三级久久三级久久 | 久久婷婷五月综合色奶水99啪| 伊人久久大香线蕉精品| 久久久久久久精品成人热色戒| 国产一区二区三区久久| 精品久久久久久久国产潘金莲 | 久久性生大片免费观看性| 香蕉久久夜色精品升级完成| 久久久久黑人强伦姧人妻| 久久久无码精品亚洲日韩按摩| 一本久久综合亚洲鲁鲁五月天| 久久精品免费观看| 久久国产精品成人片免费| 久久综合色老色| 久久av高潮av无码av喷吹| 精品国产乱码久久久久久1区2区| 日韩精品久久久久久久电影| 久久久精品人妻无码专区不卡| 久久香蕉综合色一综合色88| 久久亚洲春色中文字幕久久久|