P1169- [ZJOI2007] производство доска

1 #include <. Бит / STDC ++ H>
 2  #define что'при (я, а, б) для (INT I = (а); г <Ь; я ++)
 3  #define _rep (я, а, б) (INT I = (а), я> Ь; я -)
 4  #define INF 0x3f3f3f3f
 5  #define MOD 1000000007
 6 ЬурейеЕ долго  долго LL;
7 с  использованием  пространства имен STD;
8  рядный LL чтения ()
 9  {
 10      LL ANS = 0 Обратная ;
11      символ CH = GetChar (), последняя = '  ' ;
12 в      то время как (! Isdigit (ч)) последняя = ч, ч =GetChar ();
13 в      то время как (isdigit (ч)) ANS = (ANS << 1 ) + (ANS << 3 ) + ч - ' 0 ' , ч = GetChar ();
14 ,      если (последний == ' - ' ) ANS = - анс;
15      возвратных ансы;
16  }
 17 встроенных пустот записи (LL х)
 18  {
 19 ,      если (х < 0 ) х = -x, putchar ( ' - ' );
20 ,      если (х> = 10 ) записи (х / 10 );
21      putchar (х% 10 + ' 0 ' );
22  }
 23  INT N, M;
24  INT дп [ 2003 ] [ 2003 ];
25  INT до [ 2003 ] [ 2003 ];
26  INT ЛЕФ [ 2003 ] [ 2003 ];
27  ИНТ ри [ 2003 ] [ 2003 ];
28  ИНТ а [ 2003 ] [ 2003 ];
29  INT основных ()
 30 {
 31      N = следующим образом (), М = следующим образом ();
32      что'при (я, 1 , N + 1 )
 33          что'при (к, 1 , М + 1 )
 34              а [I] [J] = следующим образом ();
35      
36      что'при (к, 1 , М + 1 )
 37      {
 38          до [ 1 ] [J] = 1 ;
39          что'при (я, 2 , N + 1 )
 40 ,              если (а [I] [J] ^ а [i - 1 ] [J])
 41                 до [I] [J] = до [i - 1 ] [J] + 1 ;
42              еще 
43                  до [I] [J] = 1 ;
44      }
 45      
46      что'при (я, 1 , N + 1 )
 47      {
 48          LEF [я] [ 1 ] = 1 ;
49          что'при (к, 2 , М + 1 )
 50 ,              если (а [I] [J] ^ а [I] [j - 1 ])
 51                  LEF [I] [J] = LEF [I] [j - 1 ] + 1 ;
52              еще
53                  LEF [I] [J] = 1 ;
54      }
 55      
56      что'при (я, 1 , N + 1 )
 57      {
 58          п [I] [M] = 1 ;
59          _rep (J, M - 1 , 0 )
 60 ,              если (а [I] [J] ^ а [I] [J + 1 ])
 61                  п [I] [J] = п [I] [J + 1 ] + 1 ;
62              еще 
63                  ри [I] [J] = 1 ;
64      }
 65      
66      INTrnt1 = 0 ;
67      что'при (я, 1 , N + 1 )
 68          что'при (к, 1 , М + 1 )
 69          {
 70              дп [I] [J] = 1 ;
71 ,              если (я == 1 || J == 1 )
 72                  дп [I] [J] = 1 ;
73              еще ,  если (! (А [I] [J] ^ а [i - 1 ] [j - 1 ]))
 74              {
 75                  дп [I] [J] = мин (дп [i - 1 ] [j - 1] + 1 , мин (LEF [I] [J], до [I] [J]));
76                  rnt1 = макс (rnt1, дп [I] [J]);
77              }
 78          }
 79      Е ( " % d \ п " , rnt1 * rnt1);
80      
81      INT rnt2 = 0 ;
82      что'при (я, 1 , N + 1 )
 83          что'при (к, 1 , М + 1 )
 84          {
 85 ,              если (я> 1 && а [I] [J] ^ а [i - 1 ] [J])
 86              {
87                  LEF [I] [J] = мин (LEF [i - 1 ] [J], LEF [I] [J]);
88                  ри [I] [J] = мин (г [i - 1 ] [J], п [I] [J]);
89              }
 90              rnt2 = макс (rnt2, до [I] [J] * (г [я] [J] + LEF [I] [J] - 1 ));
91          }
 92      Е ( " % d " , rnt2);
93      возврата  0 ;
94 }

 

рекомендация

отwww.cnblogs.com/Asurudo/p/11425290.html