Gym 101334E dp

Posted Pacify

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gym 101334E dp相关的知识,希望对你有一定的参考价值。

分析:

这一题给出的遍历的点的序列,不是树的中序遍历,前序遍历,只要遇到一个节点就打印一个节点。关键点就在,这个序列的首字母和尾字母一定要相同,因为最终都会回到根节点,那么每一个子树也一样。

状态:

d[i][j]表示i至j的状态数

d[i][j]= d[i][j]=(d[i][j]+dp(i,k)*dp(k+1,j-1)%mod)%mod;

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const int maxn=300+5;
const ll mod=1e9;
char s[maxn];
ll d[maxn][maxn];

ll dp(int i,int j)
{
    if(i>j) return 0;
    if(d[i][j]!=-1) return d[i][j];
    if(s[i]!=s[j]) return d[i][j]=0;
    if(i==j) return d[i][j]=1;
    d[i][j]=0;
    for(int k=i;k<j;k++)
        d[i][j]=(d[i][j]+dp(i,k)*dp(k+1,j-1)%mod)%mod;
    return d[i][j];
}

int main()
{
    freopen("exploring.in","r",stdin);
    freopen("exploring.out","w",stdout);
    while(~scanf("%s",s))
    {
        memset(d,-1,sizeof(d));
        printf("%I64d\n",dp(0,strlen(s)-1));
    }
    return 0;
}

 

以上是关于Gym 101334E dp的主要内容,如果未能解决你的问题,请参考以下文章

101334E Exploring Pyramids

Gym 101201H Paint (离散化+DP)

Gym 100962J Jimi Hendrix (树形DP)

Gym 100917M Matrix, The

GYM 101933A(dp)

Gym - 101473I(dp)