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

我希望你是我獨家記憶

一段永遠封存的記憶,隨風而去
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>
            欧美风情在线| 亚洲日本久久| 久久久噜噜噜久久中文字幕色伊伊| 一级日韩一区在线观看| 国产精品qvod| 久久精品99久久香蕉国产色戒| 性做久久久久久| 亚洲动漫精品| 亚洲美女网站| 国产一区二区三区久久| 欧美bbbxxxxx| 欧美性做爰毛片| 久久久久久有精品国产| 欧美成人在线免费观看| 亚洲欧美清纯在线制服| 欧美在线1区| 亚洲精品少妇网址| 亚洲丝袜av一区| 尤物九九久久国产精品的分类| 亚洲欧美成人| 亚洲日本乱码在线观看| 欧美高清日韩| 国产精品久久久久久久电影| 久久精品九九| 欧美日本视频在线| 久久手机精品视频| 欧美三级中文字幕在线观看| 久久综合久久综合九色| 欧美亚洲第一页| 欧美va天堂在线| 国产欧美日韩综合| 亚洲人体偷拍| 国产欧美一区二区在线观看| 亚洲国产一二三| 黑人一区二区三区四区五区| 在线亚洲欧美专区二区| 亚洲国产精品黑人久久久| 亚洲一区二区三区在线看| 亚洲理伦在线| 久久亚洲精品伦理| 久久黄色影院| 国产精品家庭影院| 亚洲人线精品午夜| 亚洲国产三级网| 久久久精品网| 久久天天躁狠狠躁夜夜av| 国产精品久久久久久久久动漫| 91久久久一线二线三线品牌| 在线观看成人av电影| 午夜老司机精品| 亚洲欧美日韩国产综合精品二区| 欧美精品亚洲二区| 亚洲国产精品悠悠久久琪琪| 影音先锋久久久| 久久久久国产精品www| 久久精品视频在线看| 国产精品视频一二三| 亚洲性视频网址| 香蕉av777xxx色综合一区| 国产精品久久久久9999高清| 99精品视频网| 亚洲在线中文字幕| 国产精品成人一区二区三区吃奶 | 国产精品久久久久久一区二区三区| 欧美华人在线视频| 91久久久久| 欧美精品观看| 一本一本久久| 久久se精品一区二区| 国产一区二区三区四区hd| 久久xxxx精品视频| 欧美成人精品一区| 亚洲伦伦在线| 欧美日韩综合精品| 亚洲欧美日韩国产中文| 久久久久久亚洲精品杨幂换脸| 激情成人在线视频| 蜜臀91精品一区二区三区| 亚洲激情成人在线| 亚洲小视频在线| 国产日韩欧美在线视频观看| 久久精品国产精品亚洲| 欧美黄色一区二区| 亚洲特级毛片| 国产亚洲精品一区二555| 久久香蕉精品| 中日韩视频在线观看| 麻豆精品网站| 亚洲欧美另类国产| 国内视频一区| 欧美大片免费看| 中文在线不卡| 美女免费视频一区| 亚洲视频高清| 狠狠干狠狠久久| 欧美日韩久久久久久| 欧美一区1区三区3区公司| 亚洲第一精品影视| 午夜精品久久久久久久久| 亚洲第一精品久久忘忧草社区| 欧美日本一道本| 久久精品日产第一区二区| 日韩午夜av| 久久综合福利| 亚洲欧美国产日韩天堂区| 一区二区视频免费完整版观看| 欧美精品一区二| 久久精品国产视频| 一道本一区二区| 亚洲电影免费观看高清完整版在线| 亚洲欧美在线另类| 亚洲伦理精品| 在线视频成人| 国产有码在线一区二区视频| 欧美色图麻豆| 欧美精品精品一区| 久久久久久久久久久久久久一区| 一区二区三区欧美| 亚洲高清不卡| 欧美成人伊人久久综合网| 欧美伊久线香蕉线新在线| 亚洲视频在线观看| 亚洲精品免费在线播放| 黄网动漫久久久| 国产视频观看一区| 国产精品入口尤物| 欧美色视频在线| 欧美日韩一区二区在线观看| 欧美大片免费观看| 免费不卡在线观看| 老司机精品导航| 久久裸体艺术| 久久久久亚洲综合| 久久精品国产亚洲一区二区| 欧美一区二区黄| 性欧美精品高清| 欧美中文在线视频| 久久国产精品久久久久久| 欧美一级视频一区二区| 欧美一区二区三区四区视频| 亚洲欧美一区二区三区在线| 亚洲视频电影图片偷拍一区| 在线午夜精品自拍| 亚洲午夜91| 午夜亚洲激情| 久久久精彩视频| 久久综合网hezyo| 欧美国产国产综合| 欧美麻豆久久久久久中文| 欧美日韩亚洲一区二区| 欧美日韩视频在线一区二区观看视频| 欧美精品播放| 国产精品v日韩精品| 国产酒店精品激情| 好看的av在线不卡观看| 亚洲高清一区二| 一本色道**综合亚洲精品蜜桃冫 | 欧美在线观看一二区| 久久久久久久999精品视频| 麻豆av一区二区三区久久| 亚洲第一区在线| 中国成人亚色综合网站| 亚洲美女中出| 亚洲电影在线看| 亚洲精品日产精品乱码不卡| 制服丝袜亚洲播放| 欧美一区二区| 久久男人资源视频| 亚洲国产精品专区久久| 亚洲性视频网站| 米奇777在线欧美播放| 欧美日韩中文字幕综合视频| 国内视频精品| 在线一区二区三区四区五区| 久久久久久久尹人综合网亚洲 | 亚洲乱码国产乱码精品精天堂| 亚洲一区二区综合| 另类av导航| 亚洲一区二区精品在线观看| 久久综合九色综合欧美狠狠| 欧美日韩999| 伊人久久亚洲热| 亚洲尤物在线| 亚洲大胆人体在线| 午夜精品区一区二区三| 欧美黑人国产人伦爽爽爽| 国产日韩欧美综合| 99re热精品| 噜噜噜91成人网| 亚洲伊人色欲综合网| 欧美激情国产日韩精品一区18| 国产一区二区三区免费在线观看| 日韩视频免费看| 免费一级欧美在线大片| 亚洲男人的天堂在线aⅴ视频| 免费亚洲一区二区| 韩国亚洲精品| 欧美自拍偷拍| 亚洲网站在线看| 欧美日韩在线第一页|