• <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 閱讀(338) 評論(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 
            久久影视国产亚洲| 狠狠色丁香婷综合久久| 久久久黄片| 久久国产欧美日韩精品免费| 性欧美大战久久久久久久| 无码人妻久久一区二区三区免费| 久久精品人成免费| 91精品国产综合久久香蕉| 狠狠色丁香婷婷综合久久来来去| 久久亚洲熟女cc98cm| 国产成人久久激情91 | 久久伊人五月丁香狠狠色| 奇米影视7777久久精品| 久久午夜无码鲁丝片午夜精品| 漂亮人妻被黑人久久精品| 理论片午午伦夜理片久久| 激情伊人五月天久久综合| 四虎国产精品成人免费久久| 26uuu久久五月天| 久久久久人妻一区精品色| 久久天天躁夜夜躁狠狠| 久久97久久97精品免视看| 久久成人影院精品777| 亚洲综合精品香蕉久久网| 久久青青草原精品国产不卡| 精品免费tv久久久久久久| 日韩精品久久久久久久电影蜜臀| 色婷婷噜噜久久国产精品12p | 久久综合精品国产一区二区三区| 国产午夜免费高清久久影院| 国内精品久久久久久久久电影网 | 亚洲国产成人久久精品99| 91麻豆精品国产91久久久久久| 性欧美大战久久久久久久久| 久久久久人妻一区二区三区| 日韩一区二区三区视频久久| 狠狠色丁香婷婷综合久久来来去 | 久久综合久久美利坚合众国| 久久综合成人网| 久久精品国产亚洲αv忘忧草| 无码八A片人妻少妇久久|