• 区间dp括号匹配


    POJ2955

    匹配则加一,不需要初始化

     1 //#include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<vector>
     6 #include<cstring>
     7 #include<map>
     8 #include<set>
     9 #include<queue>
    10 #include<bitset>
    11 #include<utility>
    12 #include<functional>
    13 #include<iomanip>
    14 #include<sstream>
    15 #include<ctime>
    16 #include<cassert>
    17 #define a first
    18 #define b second
    19 #define mp make_pair
    20 #define pb push_back
    21 #define pw(x) (1ll << (x))
    22 #define sz(x) ((int)(x).size())
    23 #define all(x) (x).begin(),(x).end()
    24 #define rep(i,l,r) for(int i=(l);i<(r);i++)
    25 #define per(i,r,l) for(int i=(r);i>=(l);i--)
    26 #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
    27 #define debug1(a)
    28 cout << #a << " = " << a << endl;
    29 #define debug2(a,b)
    30 cout << #a << " = " << a << endl;
    31 cout << #b << " = " << b << endl;
    32 #define debug3(a,b,c)   cout << #a << " = " << a << endl;
    33 cout << #b << " = " << b << endl;
    34 cout << #c << " = " << c << endl;
    35 #define debug4(a,b,c,d)
    36 cout << #a << " = " << a << endl;
    37 cout << #b << " = " << b << endl;
    38 cout << #c << " = " << c << endl;
    39 cout << #d << " = " << d << endl;
    40 #define debug5(a,b,c,d,e)
    41 cout << #a << " = " << a << endl;
    42 cout << #b << " = " << b << endl;
    43 cout << #c << " = " << c << endl;
    44 cout << #d << " = " << d << endl;
    45 cout << #e << " = " << e << endl;
    46 #define eps 1e-9
    47 #define PIE acos(-1)
    48 #define cl(a,b) memset(a,b,sizeof(a))
    49 #define fastio ios::sync_with_stdio(false);cin.tie(0);
    50 #define lson l , mid , ls
    51 #define rson mid + 1 , r , rs
    52 #define ls (rt<<1)
    53 #define rs (ls|1)
    54 #define INF 0x3f3f3f3f
    55 #define lowbit(x) (x&(-x))
    56 #define sqr(a) a*a
    57 #define ll long long
    58 #define vi vector<int>
    59 #define pii pair<int, int>
    60 using namespace std;
    61 //**********************************
    62 char s[107];
    63 int n;
    64 int dp[107][107];
    65 //**********************************
    66 bool match(int a,int b)
    67 {
    68     char x=s[a],y=s[b];
    69     return x=='['&&y==']'||x=='('&&y==')';
    70 }
    71 void solve()
    72 {
    73     FOR(len,2,n)FOR(l,1,n-len+1){
    74         int r=l+len-1;
    75         dp[l][r]=dp[l+1][r-1]+match(l,r); 
    76         rep(k,l,r){
    77             dp[l][r]=max(dp[l][r],dp[l][k]+dp[k+1][r]);
    78         }
    79     }
    80     printf("%d
    ",dp[1][n]<<1);
    81 }
    82 //**********************************
    83 int main()
    84 {
    85     while(~scanf("%s",s+1)&&s[1]!='e'){
    86         n=strlen(s+1);
    87         solve();
    88     }
    89     return 0;
    90 }
    View Code

    CF

    不匹配加一,注意初始化边界

     1 //#include<bits/stdc++.h>
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<vector>
     6 #include<cstring>
     7 #include<map>
     8 #include<set>
     9 #include<queue>
    10 #include<bitset>
    11 #include<utility>
    12 #include<functional>
    13 #include<iomanip>
    14 #include<sstream>
    15 #include<ctime>
    16 #include<cassert>
    17 #define fi first
    18 #define se second
    19 #define mp make_pair
    20 #define pb push_back
    21 #define pw(x) (1ll << (x))
    22 #define sz(x) ((int)(x).size())
    23 #define all(x) (x).begin(),(x).end()
    24 #define rep(i,l,r) for(int i=(l);i<(r);i++)
    25 #define per(i,r,l) for(int i=(r);i>=(l);i--)
    26 #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
    27 #define debug1(a)
    28 cout << #a << " = " << a << endl
    29 #define debug2(a,b)
    30 cout << #a << " = " << a << endl;
    31 cout << #b << " = " << b << endl;
    32 #define debug3(a,b,c)   cout << #a << " = " << a << endl;
    33 cout << #b << " = " << b << endl;
    34 cout << #c << " = " << c << endl;
    35 #define debug4(a,b,c,d)
    36 cout << #a << " = " << a << endl;
    37 cout << #b << " = " << b << endl;
    38 cout << #c << " = " << c << endl;
    39 cout << #d << " = " << d << endl;
    40 #define debug5(a,b,c,d,e)
    41 cout << #a << " = " << a << endl;
    42 cout << #b << " = " << b << endl;
    43 cout << #c << " = " << c << endl;
    44 cout << #d << " = " << d << endl;
    45 cout << #e << " = " << e << endl
    46 #define eps 1e-9
    47 #define PIE acos(-1)
    48 #define cl(a,b) memset(a,b,sizeof(a))
    49 #define fastio ios::sync_with_stdio(false);cin.tie(0);
    50 #define lson l , mid , ls
    51 #define rson mid + 1 , r , rs
    52 #define ls (rt<<1)
    53 #define rs (ls|1)
    54 #define INF 0x3f3f3f3f
    55 #define lowbit(x) (x&(-x))
    56 #define sqr(a) a*a
    57 #define ll long long
    58 #define vi vector<int>
    59 #define pii pair<int, int>
    60 using namespace std;
    61 //**********************************
    62 int a[507];
    63 int n;
    64 int dp[507][507];
    65 //**********************************
    66 bool match(int x,int y)
    67 {
    68     return a[x]==a[y];
    69 }
    70 void solve()
    71 {
    72     cl(dp,INF);
    73     FOR(i,1,n){
    74         dp[i][i]=1;
    75         if(a[i]==a[i+1])dp[i][i+1]=1;
    76     }
    77     FOR(len,2,n){
    78         FOR(l,1,n-len+1){
    79             int r=l+len-1;
    80             if(match(l,r)){
    81                 if(r==l+1)dp[l][r]=1;
    82                 else dp[l][r]=dp[l+1][r-1];
    83             }
    84 //            if(match(l,r))dp[l][r]=min(dp[l][r],dp[l+1][r-1]);
    85             rep(k,l,r){
    86                 dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]);
    87             }
    88         }
    89     }
    90     printf("%d
    ",dp[1][n]);
    91 }
    92 //**********************************
    93 int main()
    94 {
    95     cin>>n;
    96     FOR(i,1,n)cin>>a[i];
    97     solve();
    98     return 0;
    99 }
    View Code
  • 相关阅读:
    Hadoop学习之编译eclipse插件
    js堆栈溢出错误
    java——推断日期是否在今天之前
    AlertDialog.Builder中的setMultiChoiceItems中的事件处理
    Qemu之Network Device全虚拟方案二:虚拟网卡的创建
    【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
    JFinal开发web项目出现故障小记
    HDU-4407-Sum(容斥原理)
    自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令
    待字闺中之巧妙排序分析:
  • 原文地址:https://www.cnblogs.com/klaycf/p/9818427.html
Copyright © 2020-2023  润新知