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

我希望你是我獨家記憶

一段永遠封存的記憶,隨風而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

USACO512

Posted on 2008-10-05 23:04 Hero 閱讀(137) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
  1 /*
  2 ID: wangzha4
  3 LANG: C++
  4 TASK: starry
  5 */
  6 /*
  7 Executing
  8    Test 1: TEST OK [0.000 secs, 3136 KB]
  9    Test 2: TEST OK [0.011 secs, 3140 KB]
 10    Test 3: TEST OK [0.022 secs, 3140 KB]
 11    Test 4: TEST OK [0.011 secs, 3140 KB]
 12    Test 5: TEST OK [0.000 secs, 3136 KB]
 13 */
 14 
 15 #include <stdio.h>
 16 #include <stdlib.h>
 17 #include <string.h>
 18 
 19 const int INF = 999999 ;
 20 const int size = 110 ;
 21 char data[size][size] ;
 22 int flag[size][size] ;
 23 int cflag ;
 24 
 25 char tcluster[size][size] ; int trow, tcol ;
 26 char A[size][size], B[size][size] ;
 27 char cluster[27][size][size] ;
 28 int lenwid[30][2] ;
 29 
 30 char flagtostr[3000] ; char str ;
 31 
 32 int len, wid ;
 33 int num ;
 34 
 35 int next[9][2] ;
 36 
 37 int row, col ;
 38 int snrow, enrow ;
 39 int sncol, encol ;
 40 
 41 int fmax( int a, int b ) 
 42 {
 43     return a > b ? a : b ;
 44 }
 45 int fmin( int a, int b ) 
 46 {
 47     return a < b ? a : b ;
 48 }
 49 
 50 void input()
 51 {
 52     memset( flag, 0sizeof(flag) ) ; cflag = 1 ; str = 'a' ;
 53     memset( lenwid, 0sizeof(lenwid) ) ; flagtostr[0= '0' ;
 54 
 55     forint i=0; i<row; i++ ) scanf( "%s", data[i] ) ;
 56 
 57     next[1][0= -1 ; next[1][1= -1 ;
 58     next[2][0= -1 ; next[2][1=  0 ;
 59     next[3][0= -1 ; next[3][1= +1 ;
 60 
 61     next[4][0=  0 ; next[4][1= -1 ;
 62     next[5][0=  0 ; next[5][1= +1 ;
 63 
 64     next[6][0= +1 ; next[6][1= -1 ;
 65     next[7][0= +1 ; next[7][1=  0 ;
 66     next[8][0= +1 ; next[8][1= +1 ;
 67 }
 68 
 69 bool inint r, int c )
 70 {
 71     if( r>=0&&r<row&&c>=0&&c<col ) return true ;
 72 
 73     return false ;
 74 }
 75 void DFS( int r, int c )
 76 {
 77     snrow = fmin( snrow, r ) ; sncol = fmin( sncol, c ) ;
 78     enrow = fmax( enrow, r ) ; encol = fmax( encol, c ) ;
 79     flag[r][c] = cflag ; data[r][c] = '0' ;
 80 
 81     forint i=1; i<=8; i++ )
 82     {
 83         int nextr = r+next[i][0] ; int nextc = c+next[i][1] ;
 84         ifin( nextr, nextc ) && 0==flag[nextr][nextc] && data[nextr][nextc]!='0' ) 
 85             DFS( nextr, nextc ) ;
 86     }
 87 }
 88 
 89 bool compare( char C[][size], int len, int wid, int i )
 90 {
 91     forint r=0; r<=len; r++ ) forint c=0; c<=wid; c++ )
 92     {
 93         if( cluster[i][r][c] != C[r][c] ) return false ;
 94     }
 95     return true ;
 96 }
 97 
 98 void turn90( char sour[size][size], char dest[size][size], int row, int col )
 99 {
100     //memset( dest, 0, sizeof(dest) ) ;
101     forint i=0; i<size; i++ ) forint j=0; j<size; j++ ) dest[i][j] = 0 ;
102     forint r=0; r<=row; r++ ) forint c=0; c<=col; c++ )
103         dest[c][row-r] = sour[r][c] ;
104 }
105 
106 void turnupdn( char sour[size][size], int row, int col )
107 {
108     char dest[size][size] ;    memset( dest, 0sizeof(dest) ) ;
109     forint r=0; r<=row; r++ ) forint c=0; c<=col; c++ )
110         dest[row-r][c] = sour[r][c] ;
111 
112     //memcpy( sour, dest, sizeof(dest) ) ;
113     forint r=0; r<size; r++ ) forint c=0; c<size; c++ )
114         sour[r][c] = dest[r][c] ;
115 }
116 
117 int find( int len, int wid )
118 {
119     forint i=0; i<=1; i++ )
120     {
121         if0 == i )
122         {
123             memset( A, 0sizeof(A) ) ;
124             forint r=snrow; r<=enrow; r++ ) forint c=sncol; c<=encol; c++ )
125             {
126                 if( cflag == flag[r][c] ) A[r-snrow][c-sncol] = '1' ;
127             }
128         }
129         else 
130         {
131             turn90( B, A, wid, len ) ;    turnupdn( A, len, wid ) ;
132         }
133         forint i=1; i<=num; i++ )
134         {
135             if( lenwid[i][0]!=len || lenwid[i][1]!=wid ) continue ;
136             else
137                 if( compare( A, len, wid, i ) ) return i ;
138         }
139         turn90( A, B, len, wid ) ;
140         forint i=1; i<=num; i++ )
141         {
142             if( lenwid[i][0]!=wid || lenwid[i][1]!= len ) continue ;
143             else 
144                 if( compare( B, wid, len, i ) ) return i ;
145         }
146         turn90( B, A, wid, len ) ;
147         forint i=1; i<=num; i++ )
148         {
149             if( lenwid[i][0]!=len || lenwid[i][1]!=wid ) continue ;
150             else
151                 if( compare( A, len, wid, i ) ) return i ;
152         }
153         turn90( A, B, len, wid ) ;
154         forint i=1; i<=num; i++ )
155         {
156             if( lenwid[i][0]!=wid || lenwid[i][1]!= len ) continue ;
157             else 
158                 if( compare( B, wid, len, i ) ) return i ;
159         }
160     }
161 
162     return 0 ;
163 }
164 
165 void process()
166 {
167     memset( cluster, 0sizeof(cluster) ) ; num = 0 ;
168 
169     forint r=0; r<row; r++ )
170     {
171         forint c=0; c<col; c++ )
172         {
173             if0==flag[r][c] && data[r][c]!='0' )
174             {
175                 snrow = r ; enrow = r ; sncol = INF ; encol = 0 ; DFS( r, c ) ;
176 
177                 len = enrow - snrow ; wid = encol - sncol ;
178 
179                 int findnum = find( len, wid ) ;
180 
181                 if( findnum != 0 ) 
182                 {
183                     flagtostr[cflag++= 'a'-1+findnum ;
184                 }
185                 else
186                 {
187                     num++ ; flagtostr[cflag] = str++ ;
188                     forint r=snrow; r<=enrow; r++ ) forint c=sncol; c<=encol; c++ )
189                     {
190                         if( cflag == flag[r][c] ) cluster[num][r-snrow][c-sncol] = '1' ;
191                     }
192 
193                     lenwid[num][0= len ; lenwid[num][1= wid ; cflag++ ;
194                 }
195             }
196         }
197     }
198 }
199 
200 void output()
201 {
202     /*
203     for( int i=0; i<row; i++ )
204     {
205     for( int j=0; j<col; j++ )
206     {
207     printf( "%-3d", flag[i][j] )    ;
208     }
209     printf( "\n" ) ;
210     }
211     printf( "**************************\n" ) ;
212     */
213     forint i=0; i<row; i++ )
214     {
215         forint j=0; j<col; j++ )
216         {
217             printf( "%c", flagtostr[flag[i][j]] )    ;
218         }
219         printf( "\n" ) ;
220     }
221 }
222 
223 int main()
224 {
225     //freopen( "in.txt", "r", stdin ) ;
226     //freopen( "out.txt", "w", stdout ) ;
227     freopen( "starry.in""r", stdin ) ;
228     freopen( "starry.out""w", stdout ) ;
229 
230     while( scanf( "%d %d"&col, &row )!= EOF )
231     {
232         input() ;
233 
234         process() ;
235 
236         output() ;
237     }    
238 
239     return 0 ;
240 }
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美一区二区视频97| 亚洲综合电影| 欧美激情精品久久久久| 久久精品国产亚洲5555| 久久精品二区| 欧美第一黄网免费网站| 欧美激情中文字幕乱码免费| 欧美国产精品一区| 国产精品国产馆在线真实露脸 | 西瓜成人精品人成网站| 亚洲综合电影| 久久久夜精品| 最新日韩在线| 在线亚洲伦理| 久久亚洲高清| 欧美午夜精品伦理| 国产在线观看91精品一区| 亚洲国产精品成人综合| 亚洲一区二区免费在线| 玖玖视频精品| 亚洲制服丝袜在线| 欧美国产极速在线| 亚洲美女中文字幕| 欧美一区二区三区婷婷月色 | 久久av二区| 欧美激情免费在线| 国产亚洲观看| 这里只有精品视频在线| 久久一区二区三区四区| 99在线观看免费视频精品观看| 欧美一区二区精品在线| 欧美成人亚洲成人| 国内在线观看一区二区三区| 99国产精品一区| 欧美va天堂在线| 小处雏高清一区二区三区| 欧美三级在线视频| 99精品视频一区二区三区| 可以免费看不卡的av网站| 亚洲综合99| 国产精品久久久久久亚洲毛片 | 国产嫩草影院久久久久| 亚洲精品少妇| 免费日韩精品中文字幕视频在线| 亚洲一区二区三区视频播放| 欧美日韩国产综合视频在线观看 | 久久久久在线观看| 国产日韩欧美成人| 亚洲欧美精品| 日韩一二三区视频| 欧美精品免费在线观看| 国产一区av在线| 亚洲一区在线免费| 在线视频日韩| 国产精品日韩高清| 日韩视频在线观看| 亚洲精品一区二区网址| 麻豆精品一区二区av白丝在线| 亚洲欧美另类中文字幕| 国产精品热久久久久夜色精品三区 | 午夜精品影院在线观看| 亚洲精品国产精品久久清纯直播| 午夜精品理论片| 国产欧美一区二区三区在线看蜜臀| 99精品视频免费| 亚洲精品视频啊美女在线直播| 欧美大片免费久久精品三p| 亚洲人成亚洲人成在线观看| 亚洲国产成人在线视频| 欧美成年人视频| 日韩亚洲国产欧美| 亚洲精品激情| 欧美日韩一卡二卡| 亚洲一区三区视频在线观看 | 亚洲第一视频网站| 欧美精品亚洲精品| 亚洲色诱最新| 亚洲欧美日韩视频二区| 精品不卡在线| 亚洲欧洲日韩女同| 国产精品一区二区久久久久| 久久国产手机看片| 猛干欧美女孩| 亚洲主播在线播放| 久久精品日韩欧美| 亚洲作爱视频| 欧美一区二区三区四区在线观看地址| 精品成人在线观看| 一本一本a久久| 极品少妇一区二区| 一本久久a久久精品亚洲| 国产主播在线一区| 亚洲人午夜精品| 国产亚洲精品久久久久动| 欧美激情一区二区三区全黄| 欧美天天在线| 蜜臀99久久精品久久久久久软件| 欧美成人一区二免费视频软件| 亚洲免费网站| 欧美高清视频一区二区| 久久国产精品久久精品国产| 免费观看亚洲视频大全| 欧美伊人久久久久久久久影院| 另类成人小视频在线| 亚洲欧美日韩国产一区二区三区 | 欧美一区影院| 欧美国产日韩一区二区| 久久精品男女| 欧美日韩人人澡狠狠躁视频| 一本色道88久久加勒比精品| 麻豆精品视频| 久久久久久久久岛国免费| 欧美精品在线一区二区三区| 久久青草久久| 国产三级精品在线不卡| 在线视频一区观看| 一区二区免费在线播放| 美女脱光内衣内裤视频久久影院 | 久久久久久午夜| 亚洲欧美日韩另类| 欧美日韩精品一区二区三区四区 | 国模大胆一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧美日韩直播| 亚洲一区二区三区涩| 欧美国产一区二区三区激情无套| 久久亚洲一区二区三区四区| 国产欧美精品日韩区二区麻豆天美| 日韩视频精品在线| 99国产精品| 欧美伦理视频网站| 亚洲精品麻豆| 99精品国产在热久久| 欧美激情第三页| 亚洲精品免费一区二区三区| 亚洲人成在线观看| 欧美成人一区二区三区在线观看 | 欧美一级片久久久久久久| 午夜视黄欧洲亚洲| 国产九九精品视频| 欧美一级视频一区二区| 久久五月天婷婷| 在线播放视频一区| 乱码第一页成人| 亚洲国产一二三| 一本色道久久综合| 欧美午夜视频网站| 亚洲欧美电影在线观看| 久久久夜色精品亚洲| 极品少妇一区二区三区精品视频| 久久久亚洲综合| 亚洲国产精品一区制服丝袜 | 欧美高清在线一区| 亚洲精品视频免费观看| 亚洲一区二区三区精品在线| 国产精品五月天| 久久精品视频免费| 亚洲国产二区| 免费在线日韩av| 久久国产精品高清| 激情综合色丁香一区二区| 久久久久久久久蜜桃| 欧美丰满高潮xxxx喷水动漫| 亚洲人成久久| 国产精品va在线| 久久xxxx| 亚洲人www| 欧美亚洲午夜视频在线观看| 在线不卡亚洲| 欧美日韩国产影片| 欧美亚洲视频| 亚洲国产视频a| 欧美一区亚洲二区| 亚洲毛片在线观看| 国产午夜精品全部视频在线播放| 久久国产一区二区| 9l国产精品久久久久麻豆| 看欧美日韩国产| 亚洲视频在线观看免费| 一区二区在线视频播放| 欧美视频网址| 欧美国产欧美亚洲国产日韩mv天天看完整 | 日韩视频在线你懂得| 欧美一区二区三区四区视频| 亚洲第一区在线观看| 国产精品日韩欧美大师| 欧美成人久久| 久久久精品国产一区二区三区| 亚洲人成毛片在线播放| 久久影视精品| 欧美一区二区三区在线看 | 欧美一级大片在线观看| 日韩一级片网址| 欧美国产精品日韩| 久久九九热re6这里有精品| 在线亚洲高清视频| 亚洲精品日日夜夜| 亚洲第一区中文99精品| 国产一区二区黄色| 国产欧美日韩视频一区二区|