codeforces 245H Queries for Number of Palindromes 区间DP

题意:找特定范围内的回文数量

做法:基本的区间DP做法,可惜忘了...

#include <iostream>
#include<cstdio>
#include<cstring>
#define LMT 5002
using namespace std;
bool is[LMT][LMT];
int get[LMT][LMT];
char str[LMT];
int main()
{
    int n,l,r,ll;
    scanf("%s",str);
    ll=strlen(str);
    for(int i=0;i<ll;i++)is[i+1][i]=is[i][i]=get[i][i]=1;//注意考虑没有对称轴字母的情况
    for(int k=2;k<=ll;k++)
      for(int j,i=0;i+k-1<ll;i++)
      {
          j=i+k-1;
          is[i][j]=(str[i]==str[j]&&is[i+1][j-1]);
          get[i][j]=get[i][j-1]+get[i+1][j]-get[i+1][j-1]+is[i][j];
      }
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d%d",&l,&r);
        l--;r--;
        printf("%d\n",get[l][r]);
    }
    return 0;
}


你可能感兴趣的:(codeforces 245H Queries for Number of Palindromes 区间DP)