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、INT&B)。 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、INT&B) 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 }