Palindrome subsequence (区间dp)

均值场博弈_平均场博弈(mean field game) The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。... 阅读详情

Palindrome subsequence

In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, the sequence <A, B, D> is a subsequence of <A, B, C, D, E, F>.
(http://en.wikipedia.org/wiki/Subsequence)

Given a string S, your task is to find out how many different subsequence of S is palindrome. Note that for any two subsequence X = <S x1, S x2, ..., S xk> and Y = <S y1, S y2, ..., S yk> , if there exist an integer i (1<=i<=k) such that xi != yi, the subsequence X and Y should be consider different even if S xi = S yi. Also two subsequences with different length should be considered different.

Input The first line contains only one integer T (T<=50), which is the number of test cases. Each test case contains a string S, the length of S is not greater than 1000 and only contains lowercase letters. Output For each test case, output the case number first, then output the number of different subsequence of the given string, the answer should be module 10007. Sample Input
4
a
aaaaa
goodafternooneveryone
welcometoooxxourproblems
Sample Output
Case 1: 1
Case 2: 31
Case 3: 421
Case 4: 960

思路:注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序列的个数,有递推关系:

dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]

如果i和j位置出现的字符相同,那么dp[i][j]可以由dp[i+1][j-1]中的子序列加上这两个字符构成回文子序列,再加上i,j位置组成的回文子序列,也就是

dp[i][j]+=dp[i+1][j-1]+1,注意边界特判一下就可以了

但是需要注意的一点是这个题用地dfs写并不是特别优化,用c++提交可以过,中间的取模运算如果取模会超时,改成减法就可以过(虽然加减法比乘除快但是没想到时间卡的这么严?)否则会超时
code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1010;
const int mod = 10007;
int dp[maxn][maxn];
char str[maxn];
int dfs(int l,int r){
    if(l > r) return 0;
    if(l == r) return 1;
    if(dp[l][r] != -1) return dp[l][r];//记忆化搜索
    dp[l][r] = (dfs(l+1,r) + dfs(l,r-1) - dfs(l+1,r-1));
    if(str[l] == str[r]){
        dp[l][r] += (dfs(l+1,r-1) + 1);
        //相当于又可以以lr为两端和中间的所有已有回文序列构成新的回文序列
        //dfs(l+1,r-1)是两个端点和中间任意回文序列构成的新序列
        //+1是两个端点单独存在构成的一个长度为2的回文序列
    }
    while(dp[l][r] >= mod){
        dp[l][r] -= mod;//模运算改成减法运算
    }
    while(dp[l][r] < 0)
        dp[l][r] += mod;
    return dp[l][r];
}
int main(){
    int t;
    int cas = 0;
    scanf("%d",&t);
    while(t--){
        printf("Case %d: ",++cas);
        scanf("%s",str+1);
        int len = strlen(str+1);
        for(int i = 0; i <= len; i++){
            for(int j = 0; j <= len; j++){
                dp[i][j] = -1;
            }
        }
        printf("%d\n",dfs(1,len));
    }
    return 0;
}


SPSS篇—卡方检验 今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法:卡方检验。 在开始做分析之前,我们需要明白两件事情:卡方检验是什么?一般用来干什么?我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的解释是:卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。它的原理是... 阅读详情

相关推荐

PCB激光直接成像(LDI)设备技术解析与优化方案

激光直接成像(LDI)是PCB制造中的关键数字化工艺,通过激光束直接在基板上形成电路图案。其核心技术在于高精度光学系统与智能控制算法的结合,工作精度可达微米级。在HDI板、柔性电路等高端PCB制造中,LDI技术能显著提升线宽精度和层间对位准确性。当前行业面临材料适配性、热变形控制等挑战,动态能量补偿、多波长曝光等创新方案正在突破这些瓶颈。随着模块化设计、预测性维护等工程实践的普及,LDI设备综合效率持续提升,为5G、汽车电子等领域的精密电路生产提供关键技术支撑。

weixin_29168393的博客 390

Palindrome subsequence (区间DP)

Palindrome subsequence HDU - 4632 In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elemen...

weixin_30825581的博客 152

软件工程:数据字典

数据字典

永远怀着至诚之心拥抱世界 4273

Palindrome subsequence(带子序列的区间DP)

Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/65535 K (Java/Others) Total Submission(s): 5345Accepted Submission(s): 2323 Problem Descr...

C_Dreamy的博客 576

手把手教你用Simulink搭建DSOGI-PLL模型(附完整代码下载)

本文详细介绍了在Simulink中搭建高鲁棒性DSOGI-PLL模型的完整工程实践指南。针对传统锁相环在非理想电网下的不足,文章深入剖析了双二阶广义积分器锁相环(DSOGI-PLL)的核心原理与优势,并提供了从模块构建、系统组装到参数整定与测试验证的全流程手把手教程,附有完整代码下载,助力工程师应对谐波、电压跌落等复杂电网工况。

weixin_29223603的博客 387

5分钟搞定CST周期性结构仿真:共面波导色散曲线快速生成技巧

本文提供了一套在CST Studio Suite中快速仿真周期性结构并生成色散曲线的标准化流程。针对共面波导设计,重点解析了周期性边界条件的核心设置、本征模求解器(JDM算法)的优化技巧,以及通过参数扫描与后处理模板实现自动化,旨在帮助射频与微波工程师在5分钟内高效完成关键性能验证。

blue的专栏 1245

Palindrome subsequence -区间不连续回文子串个数 - 区间dp(详解)

In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, the sequence &lt;A, B...

m0_37579232的博客 446

CTF实战:Wireshark数据包分析从入门到精通(附经典题型解析)

本文详细介绍了Wireshark在CTF比赛中的数据包分析技巧,从基础抓包到高级协议解析,涵盖HTTP流量分析、USB键盘数据还原等实战案例。通过经典题型解析,帮助读者掌握精准过滤、文件提取等核心技能,提升CTF竞赛中的网络流量分析能力。

pz890123的博客 585

最长回文子串 and 最长回文子序列

欢迎访问https://blog.youkuaiyun.com/lxt_Lucia~~   宇宙第一小仙女\(^o^)/~~萌量爆表求带飞=≡Σ((( つ^o^)つ~dalao们点个关注呗~~   一、概念   1、回文(palindrome)        回文就是正读和反读都一样的字符串,如aba,abba,abcba等。 2、字符子串和字符子序列的区别       (1)字符字串指的是字...

lxt_Lucia的博客 3162

贝叶斯网络 (Bayesian Networks) 原理与代码实例讲解

贝叶斯网络 (Bayesian Networks) 原理与代码实例讲解 1. 背景介绍 1.1 什么是贝叶斯网络? 贝叶斯网络(Bayesian Networks)是一种基于概率论的图形模型,用于表示随机

AI天才研究院 1329

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1445

JAVA:实现LongestPalindromicSubsequence最长回文子序列算法(附带源码)

JAVA:实现LongestPalindromicSubsequence最长回文子序列算法(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1090

Python爬虫实战:高效爬取CNKI知网文献数据的技术解析

本文将详细介绍如何使用Python最新技术构建一个高效的CNKI知网文献爬虫系统。我们将从爬虫基础知识讲起,逐步深入到高级反反爬技术、分布式爬取、智能解析等前沿内容。文章包含完整的代码实现,涵盖请求模拟、数据解析、持久化存储等关键环节,并特别针对CNKI的反爬机制提供解决方案。通过本文,读者将掌握构建专业级学术文献爬虫的全套技术栈。关键词:Python爬虫、CNKI爬取、反反爬技术、文献数据挖掘、Scrapy框架本文详细介绍了如何使用Python最新技术构建CNKI知网文献爬虫。

2201_76125261的博客 2075

Palindrome subsequence(区间dp)

http://acm.hdu.edu.cn/showproblem.php?pid=4632 Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/Others) Total Submission(s): 2764    Accepted

Olga_jing的博客 381

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

HDU4632 Palindrome subsequence(区间DP)

题目点我点我点我 题意:找一个字符串里有多少个回文子序列。 (注意是子序列,如:abcsdpfocba,abccba就是一种情况,嘛,应该也没人和我一样一开始我就YY错了orz) 思路:区间DP,dp[i][j]表示从第i个到第j个有多少个回文子序列,将所有dp[i][i]初始化为1(题目要求,一个字母也为回文),其他为0. 状态转移:因为是记录子序列的数目,i-j的子序列

blanKey的博客 2157

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU4632:Palindrome subsequence(区间DP)

Problem Description In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example,

ACM!荣耀之路! 2980

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

HDU 4632 Palindrome subsequence(区间dp)

题意:给一个字符串,求回文子序列个数,最后答案模10007 区间dp简单题 区间dp一般第一层枚举区间长度,第二层就是枚举区间了,第三层可能还有什么枚举短点,一般是n^3的复杂度,如果满足一定的条件可以用四边形不等式优化。 这道题就二层循环就可以了。 区间的遍历顺序,也有很多种写法,但不过写的前提就是,要确定递推中以前的状态都是存在的 dp[j][i]=dp[j+1][i]+dp[j][...

KXL5180的博客 243

HDU4632 Palindrome subsequence 题解 区间DP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632【题目描述】《回文子串数量》给你一个长度为N(N≤1000)的字符串,你输出它所有的回文子串的数量(对10007取模)。只要从字符串 s 中顺序地取出一些字符(不要求连续,可以是 s 本身,不能是空串),不改变他们的顺序的情况下,这个子串是一个回文串,那么他就是一个 s 的回文子串。【输入格式】首...

weixin_30362801的博客 155

【HDU4632 Palindrome subsequence】区间dp

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632 题意:给你一个序列,问你该序列中有多少个回文串子序列,可以不连续。 思路:dp[i][j]表示序列i到j中具有的回文串序列数。 当s[i]==s[j], dp[i][j]=dp[i+1][j]+dp[i][j-1]+1 否则dp[i]...

baidui8622的博客 111

HDU Palindrome subsequence(区间DP)

HDU Palindrome subsequence(区间DP)

Dacc123的博客 528

【HDU4632】Palindrome subsequence【区间DP】

题目大意: 题目链接:https://blog.youkuaiyun.com/nav/watchers 给出ttt个字符串,求每个字符串的回文子串个数。 思路: 这种题一看就是区间DP,只可惜想不到方程。 设f[i][j](i≤j)f[i][j](i\leq j)f[i][j](i≤j)表示iii到jjj的区间的回文子串个数。 那么如何转移呢? 肯定是[i,k][i,k][i,k]区间会问子串个数+[k,j...

stoorz 300

HDU4632 Palindrome subsequence【区间DP】

题目链接:HDU4632 Palindrome subsequence 题意:找出字符串里回文子序列的个数; 分析:由差分可知dp[l][r]=(dp[l][r-1]+dp[l+1][r]-dp[l+1][r-1]+mod)%mod 当s[l]=s[r]时,dp[l][r]=(dp[l][r]+dp[l+1][r-1]+1)%mod,[l,r]可由[l+1,r-1]转移来,并且构成一个新的回...

MaJorieL 229

Palindrome subsequence(区间dp+容斥)

In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, the sequence &lt...

weixin_30760895的博客 193

【区间DP】HDU 4632 Palindrome subsequence

HDU 4632 Palindrome subsequence 题意:让找一个字符串中回文子序列的最大数量。 举两个栗子: //aaa /* len = 2 */ dp[1][2] = dp[1][1] + dp[2][2] + 1 = 3; dp[2][3] = dp[2][2] + dp[3][3] + 1 = 3; /* len = 3 */ dp[1][3] = dp[1][2]...

L_X_ 197

HDU 4632 Palindrome subsequence(区间dp)

题意 给你一个字符串要你统计其中出现过多少个不同的回文子串,回文子串不一定每个字符都连续,不同是说位置不同如aba的答案就是5 因为不同的回文子串有a(第一个a), b,aa(因为子串的字符可以不连续), aba,a(最后一个a) 题解 :假设s[i] != s[j],dp[i~j] 就是由s[i+1 ~ j] 或 s[i ~ j -1] 前后加一个求出,dp[i][j] = dp[i+1][j...

weixin_43763889的博客 174

Hdu 4632 Palindrome subsequence(区间dp)

题目 In mathematics, a subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements. For example, the sequence <A...

Zain的博客 133
上一篇: Anniversary party(树形dp)
下一篇: Two Rabbits HDU - 4745 (区间dp)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值