• <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 
            亚洲国产成人久久综合碰| 亚洲精品无码久久久久久| 91精品国产高清久久久久久91 | 色欲av伊人久久大香线蕉影院 | 国产亚洲精久久久久久无码77777| 久久天天躁夜夜躁狠狠| 69SEX久久精品国产麻豆| 久久久久这里只有精品| 亚洲色欲久久久综合网| 久久福利片| 久久久老熟女一区二区三区| 久久久久成人精品无码| 日韩精品久久久久久免费| 久久亚洲中文字幕精品一区四| 无码精品久久久天天影视| 久久久久国产| 亚洲国产精品久久久久网站| 久久精品久久久久观看99水蜜桃| 亚洲国产成人久久精品动漫| 久久久精品人妻一区二区三区蜜桃 | 久久精品无码一区二区app| 久久久精品国产| 国产L精品国产亚洲区久久| 久久丫精品国产亚洲av| 亚洲中文字幕伊人久久无码| 97精品伊人久久久大香线蕉| 久久久精品2019免费观看| 欧美久久久久久| 日韩欧美亚洲综合久久影院Ds| 国产99久久久久久免费看| 国产成人精品久久一区二区三区| 国产69精品久久久久久人妻精品| 亚洲国产日韩欧美综合久久| 久久天天躁狠狠躁夜夜av浪潮| 日本精品久久久中文字幕| 久久99国产精品99久久| 浪潮AV色综合久久天堂| 成人国内精品久久久久影院| 99国产欧美精品久久久蜜芽 | 久久久久久久久久免免费精品| 久久亚洲精品中文字幕三区|