[テンプレート]単調キュー

1つの#include <ビット/ STDC ++ H>
 2  使用して  名前空間STDを、
3  INT [ 1000年 + 5 ] [ 1000年 + 5 ]。
4  INT X [  + 5 ] [ 1000年 + 5 ]。
5  INT X [  + 5 ] [ 1000年 + 5 ]。
6  INT Y [ 1000年 + 5 ] [ 1000年 + 5 ]。
7  のint Y [1000年 + 5 ] [ 1000年 + 5 ]。
8  int型 Q [ 1000年 + 5 ]。
9  int型 Q [ 1000年 + 5 ]。
10  INT メイン(){
 11      のint N、M、K; scanf関数(" %D%D%D "、&​​N、&M、およびK);
12      のためにint型 i = 1 ; iが<= N ++ {I)
 13          のためのINT J = 1 ; J <= M; ++ j)は
 14            のscanf("%のD 、および[I] [J]);
 15      }
 16      INT F、B、F、B;
 17      用のint型 i = 1 ; iが<= N; ++ i)が{
 18          F = B = F = B = Q [ 1 ] = Q [ 1 ] = 1 ;
 19          INT J = 2、J <= M; ++ j)は{
 20              ながら([I] [j]は> [i]は[Qが= [B] && F <= B) - B;
 21              ながら([I]、[J] <= [I] [Q [B] && F <= B) - B;
 22              Q [B ++ ] = Q [++ B] = jは、
 23              ながら(jQの[F]> = K)++ F。
24              一方(JQ [F]> = K)++ F。
25              場合(J> = K){
 26                  X [i]は[J-K + 1 ] = [I] [Q [F]]。
27                  X [i]は[J-K + 1 ] = [I] [Q [] F]と、
28              }
 29          }
 30      }
 31      のためのint型 I = 1 ; I <= M-K + 1 ; ++ I){
 32          F = B = F = B = Q [ 1 ] = Q [ 1 ] = 1 33          のためにint型、J = 2、J <= N; ++ j)は{
 34              ながら(X [J] [I]> = X [Q [B] [I] && F <= B) - B。
35              一方(X [J] [I] <= xで[Q [B] [I] && F <= B) - B。
36              Q [++ B] = Q [++ B] = J。
37              一方(jQの[F]> = K)++ F。
38              一方(JQ [F]> = K)++ F。
39              であれば(j> = K){
 40                  Y [J-K + 1 ] [I] =のX [Q [F] [I]。
41                  Y [J-K + 1 ] [I] =のX [] F Q [] [I]。
42              }
 43          }
44      }
 45      INT ANS = 0x3f3f3f3f 46      のためには、int型 I = 1 ; I <= N-K + 1 ; ++ {I)
 47          のためのint型 J = 1 ; J <= M-K + 1 ; ++ j)は{
 48の              ANS =分(ANS、Yを[I] [J] - Y [I] [J])。
49          }
 50      }
 51      のprintf(" %dの" 、ANS)。
52      リターン 0 53 }

 

おすすめ

転載: www.cnblogs.com/xiaobuxie/p/11391845.html