题目链接:http://codeforces.com/problemset/problem/245/H

题意:

  给你一个字符串s。

  然后有t个询问,每个询问给出x,y,问你区间[x,y]中的回文子串的个数。

题解:

  表示状态:

    dp[x][y] = numbers

    表示区间[x,y]中的回文子串个数。

  找出答案:

    每次询问:ans = dp[x][y]

  如何转移:

    dp[x][y] = dp[x][y-1] + dp[x+1][y] - dp[x+1][y-1] + pal[x][y]

    用到了容斥原理。

    pal[x][y]表示子串s[x to y]是否是一个回文串(是为1,不是为0)。

    其中pal[x][y]又有递推式:

    pal[x][y] = ( s[x]==s[y] && (x+1==y || pal[x+1][y-1]) )

    记忆化搜索就好啦。

  边界条件:

    if(x>y) dp[x][y] = 0

    if(x==y) dp[x][y] = 1

AC Code:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 5005 using namespace std; int t;
int dp[MAX_N][MAX_N];
int pal[MAX_N][MAX_N];
char s[MAX_N]; int is_pal(int x,int y)
{
if(s[x]!=s[y]) return ;
if(x+==y) return ;
if(pal[x+][y-]!=-) return pal[x+][y-];
return pal[x+][y-]=is_pal(x+,y-);
} int dfs(int x,int y)
{
if(dp[x][y]!=-) return dp[x][y];
if(x>y) return ;
if(x==y) return dp[x][y]=pal[x][y]=;
dp[x][y]=dfs(x,y-)+dfs(x+,y)-dfs(x+,y-);
pal[x][y]=(s[x]==s[y] && (x+==y || pal[x+][y-]));
return dp[x][y]=dp[x][y]+pal[x][y];
} int main()
{
scanf("%s%d",s+,&t);
memset(dp,-,sizeof(dp));
int x,y;
while(t--)
{
scanf("%d%d",&x,&y);
printf("%d\n",dfs(x,y));
}
}

最新文章

  1. 【Win10】【Win2D】实现控件阴影效果
  2. HyperLink控件
  3. throw 子句
  4. IP101A芯片默认物理地址(PHY Adress)确定
  5. 2016030206 - mysql常用命令
  6. JavaScript_变量的自动转换和语句
  7. CALayer的基本操作
  8. lua学习笔记之-语言基础
  9. favicon支持的图片格式
  10. Java学习笔记之接口和抽象类
  11. POJ_2769同余问题
  12. centos基本命令
  13. centos7启动网卡报错(Failed to start LSB: Bring up/down networking )
  14. Ubuntu16.04 导入tensorflow报错
  15. sqoop 测试 --hive-delims-replacement 参数
  16. 计算机系统的通信PPT版本
  17. android彻底关闭应用程序方法
  18. .io域名在申请SSL证书时被坑
  19. (zhuan) 资源|TensorFlow初学者必须了解的55个经典案例
  20. 【转】如何使用MAT分析内存泄漏

热门文章

  1. Python内置函数之super()
  2. 如何突破PHP程序员的技术瓶颈分析
  3. 配置Nginx防止直接用IP訪问Webserver
  4. android 软键盘监听显示和隐藏
  5. 程序包 javax.servlet 不存在 解决办法
  6. iptables启动脚本分析
  7. CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)
  8. Lumen开发:lumen源码解读之初始化(3)——单例(singleton)与中间件(Middleware)
  9. Linux 服务器配置JDK
  10. Latent Activity Trajectory (LAT)