• <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>

            superman

            聚精會神搞建設 一心一意謀發展
            posts - 190, comments - 17, trackbacks - 0, articles - 0
               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            ZOJ 1019 - Illusive Chase

            Posted on 2008-03-19 12:42 superman 閱讀(335) 評論(0)  編輯 收藏 引用 所屬分類: ZOJ
              1 /* Accepted 1019 C++ 00:00.04 852K */
              2 #include <iostream>
              3 
              4 using namespace std;
              5 
              6 int n, m, p;
              7 bool map[101][101];
              8 
              9 struct
             10 {
             11     int s, t;
             12     char direction;
             13 }trip[100];
             14 
             15 bool finish;
             16 
             17 void swap(int & a, int & b)
             18 {
             19     a = a ^ b;
             20     b = a ^ b;
             21     a = a ^ b;
             22 }
             23 
             24 inline bool canGo(int sx, int sy, int tx, int ty)
             25 {
             26     if(tx >= 1 && tx <= n && ty >= 1 && ty <= m);
             27     else
             28         return 0;
             29     if(sx > tx)
             30         swap(sx, tx);
             31     if(sy > ty)
             32         swap(sy, ty);
             33     for(int i = sx; i <= tx; i++)
             34         for(int j = sy; j <= ty; j++)
             35             if(map[i][j])
             36                 return 0;
             37     return 1;
             38 }
             39 
             40 void search(int x, int y, int k)
             41 {
             42     if(finish)
             43         return;
             44     if(k > p)
             45     {
             46         finish = 1;
             47         return;
             48     }
             49     if(trip[k].direction == 'U')
             50     {
             51         for(int i = trip[k].s; i <= trip[k].t; i++)
             52             if(canGo(x - 1, y, x - i, y))
             53                 search(x - i, y, k + 1);
             54         return;
             55     }
             56     if(trip[k].direction == 'D')
             57     {
             58         for(int i = trip[k].s; i <= trip[k].t; i++)
             59             if(canGo(x + 1, y, x + i, y))
             60                 search(x + i, y, k + 1);
             61         return;
             62     }
             63     if(trip[k].direction == 'L')
             64     {
             65         for(int j = trip[k].s; j <= trip[k].t; j++)
             66             if(canGo(x, y - 1, x, y - j))
             67                 search(x, y - j, k + 1);
             68         return;
             69     }
             70     if(trip[k].direction == 'R')
             71     {
             72         for(int j = trip[k].s; j <= trip[k].t; j++)
             73             if(canGo(x, y + 1, x, y + j))
             74                 search(x, y + j, k + 1);
             75         return;
             76     }
             77 }
             78 
             79 int main()
             80 {
             81     int N;
             82     int s, t;
             83     char direction;
             84     
             85     cin >> N;
             86     while(N--)
             87     {
             88         cin >> n >> m;
             89         for(int i = 1; i <= n; i++)
             90             for(int j = 1; j <= m; j++)
             91                 cin >> map[i][j];
             92         p = 0;
             93         while(1)
             94         {
             95             cin >> s >> t;
             96             if(s == 0 && t == 0)
             97                 break;
             98             p++;
             99             trip[p].s = s;
            100             trip[p].t = t;
            101             cin >> trip[p].direction;
            102         }
            103         int ans = 0;
            104         for(int i = 1; i <= n; i++)
            105             for(int j = 1; j <= m; j++)
            106                 if(map[i][j] == 0)
            107                 {
            108                     finish = 0;
            109                     search(i, j, 1);
            110                     ans += finish;
            111                 }
            112         cout << ans << endl;
            113     }
            114     
            115     return 0;
            116 }
            117 
            久久久久免费精品国产| 99热成人精品免费久久| 婷婷久久综合九色综合绿巨人| 精品久久久久久国产免费了| 久久久久国色AV免费观看| 久久乐国产综合亚洲精品| 亚洲国产精品久久久天堂 | 精品无码久久久久国产| 色噜噜狠狠先锋影音久久| 亚洲日本久久久午夜精品| 欧美黑人又粗又大久久久| 久久福利片| 国产婷婷成人久久Av免费高清| 久久久精品久久久久久| 久久久久亚洲精品无码蜜桃| 久久精品亚洲福利| 久久久女人与动物群交毛片 | 亚洲乱码精品久久久久.. | 99久久综合国产精品免费| 精品少妇人妻av无码久久| 久久国内免费视频| 国产精品成人99久久久久 | 久久久久人妻精品一区二区三区 | 一本久久综合亚洲鲁鲁五月天| 久久精品中文字幕无码绿巨人| 久久天天日天天操综合伊人av| 国内精品久久久久影院免费| 亚洲狠狠婷婷综合久久蜜芽| 亚洲欧洲精品成人久久奇米网 | 亚洲人成精品久久久久| 欧美日韩久久中文字幕| 色偷偷91久久综合噜噜噜噜| 色综合久久久久网| 秋霞久久国产精品电影院| 久久成人国产精品| 精品无码久久久久久尤物| 国产精品久久久久久搜索| 国产精品久久久久9999| 国内精品久久国产大陆| 2020久久精品国产免费| 曰曰摸天天摸人人看久久久|