括弧を一致区間DP(エントリー)

https://www.nitacm.com/problem_show.php?pid=8314

アイデア:似てhttps://blog.csdn.net/MIKASA3/article/details/51523563

  1つ の#define IOSはios_base :: sync_with_stdio(0)。cin.tie(0)。
  2の#include <cstdioを> // のsprintf islowerはisupper 
  3の#include <cstdlib> // のmalloc出口STRCATのitoaはシステム( "CLS")
  4の#include <入出力ストリーム> // 
  5の#include <fstreamの> // freopenは(「C :\\ユーザー\\ 13606 \\デスクトップ\\草稿.TXT」、 "R"、STDIN); 
  6の#include <ビットセット>
   7  // の#include <地図>
   8  // の#include <unordered_map> 
  9の#include <ベクトル>
 10の#include <積層>
12の#include < 文字列・H> // はstrstr SUBSTR 
13の#include < ストリング >
 14の#include <TIME.H> // にsrand(((符号なし)時間(NULL)))。シードN =ランド()%10から0〜9。
15の#include <cmath>
 16の#include <両端キュー>
 17の#include <キュー> // PRIORITY_QUEUE <整数、ベクトル<整数>、大きな<整数>> Q。// 以下
18の#include <ベクトル> // emplace_back
 19  // の#include <math.h>の
 20  // の#include <WINDOWS.H> // (+ LEN)逆。〜!〜!
21の#include <アルゴリズム> // ソート+ユニーク:SZ =一意(B + 1、B + N + 1) - (B + 1)+ nth_element(第一、第nは、最後に、比較)
22  使用 名前空間 STDを、// next_permutation(A + 1、A + 1個の+ N)。// prev_permutation
 23の // ****************** 
24の int型の ABS面(INT A)。
25  INT lowbit(INT N)。
26  INT Del_bit_1(int型N);
27  int型 MAXX(int型int型のB)。
28の int型のミネソタ州(int型int型のB)。
29  ダブル fabss(ダブルA)。
30  ボイド swapp(INT&A、INTB)。
31  clock_t __STRAT、__ END;
32  ダブル__TOTALTIME。
33  ボイド _MS(){__ STRAT = クロック();}
 34  空隙 _ME(){__ END =クロック(); __ TOTALTIME =(ダブル)(__ END -__ STRAT)/ CLOCKS_PER_SEC; COUT << " 時間:" << __ TOTALTIME << " S " << ENDL;}
 35  // ***********************
36  の#define RINTは整数レジスタ
 37  の#defineを foは(A、B、C)(RINTのA = B; <= C; ++ A)のための
 38  の#define FR(A、B、C)のための(RINTのA = B ;> = C; - A)
 39  の#define MEM(A、B)のmemset(A、B、はsizeof(A))
 40  の#define PRのprintf
 41回 の#define SCのscanf
 42回 の#defineのLS RT << 1
 43  #定義のRS RT << 1 | 1
 44 typedefの長い 長いLLを。
45  CONST  ダブル E = 2.718281828 46  のconst  ダブル PI = ACOS( - 1.0 )。
47  // CONST LL INF =(1LL << 60)。
48  のconst  int型 INF =(1 << 30 )。
49  のconst  ダブル ESP = 1E- 9 50  CONST  INT MOD =(INT)1E9 + 7 51  のconst  int型 N =(INT)1E2 + 10 52  
53  のint DP [N] [N]。
54の チャーS [N]。
55  
56  のint main()の
 57  {
 58      ながら(SC("%S "、S + 1)&& S [ 1 ] =!' E ' 59      {
 60          のintリットル=のSTRLEN(S + 1 );
 61          MEM(DP、0 );
 62          INT LEN = 2 ; LEN <= 1。 ++ LEN)
 63          {
 64              のためのint型 i = 1 ; iが= L-LEN + < 1 ; ++ i)が
 65              {
 66                  であれば(S [I] == ' ' && S [I + len-1 ] == ' ' || S [I] == ' [ ' && S [I + len- 1 ] == ' ] ' 67                      、DP [I] [iがlen- + 1 ] DPを= [I + 1 ] [私はlen- + 2 +] 2 68                  のためのint型 ; J <= I + len- J = 1 ; ++ j)は
 69                      DP [I] [iが+ len- 1 ] = MAX(DP [I] [iが+ len- 1 ]、DP [ I] [J] + DP [J + 1 ] [I + len- 1 ])。
70              }
 71         }
 72          PR(" %d個の\ n "、DP [ 1 ] [L])。
73      }
 74      リターン 0 75  }
 76  
77  / * ******************************************** **************************************** * / 
78  
79  int型 MAXX(int型int型B)
 80  {
 81      リターン A> B?A:B;
82  }
 83  
84  空隙 swapp(INT&A、INTB)
 85  {
 86      、A ^ = B ^ = A ^ = B。
87  }
 88  
89  int型 lowbit(int型N)
 90  {
 91      リターン N&( - N)。
92  }
 93  
94  INT Del_bit_1(int型N)
 95  {
 96      リターン N・(N- 1 )。
97  }
 98の 
99  int型の ABS面(INT A)
 100  {
 101      戻り A> 0: - ? 102  }
 103  
104  ダブル fabss(ダブルA)
 105  {
 106      戻り A> 0: - ? 107  }
 108  
109  INTミネソタ州(INT A、INT B)
 110  {
 111      リターン <B?A:B;
112 }

 

おすすめ

転載: www.cnblogs.com/--HPY-7m/p/11587208.html