HDU 4632 Palindrome subsequence(区间dp)

Python RPA 流程自动化快速上手 阅读详情

Palindrome subsequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/Others)
Total Submission(s): 2595    Accepted Submission(s): 1039


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, 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
 

Source
 




/*
题意:问一个字符串的会问序列有多少个
    dp[i][j]=(dp[i][j-1]+dp[i+1][j]-dp[i+1][j-1]);
    if(c[i]==c[j]) 那么加上中间的dp[i+1][j-1],因为可以和i,j形成新的
    还要加上  1  (i 和  j 形成字符串)


*/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define bug printf("hihi\n")

#define eps 1e-8
typedef __int64 ll;

using namespace std;

#define mod 10007
#define INF 0x3f3f3f3f
#define N 1005

int dp[N][N];
int len;
char c[N];

int main()
{
   int i,j,t,ca=0;
   scanf("%d",&t);
   while(t--)
   {
       scanf("%s",c);
       len=strlen(c);
       memset(dp,0,sizeof(dp));
       for(i=0;i<len;i++)
          dp[i][i]=1;

       for(i=len-1;i>=0;i--)
         for(j=i+1;j<len;j++)
         {
            dp[i][j]=(dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+mod)%mod;
            if(c[i]==c[j])
                dp[i][j]=(dp[i][j]+dp[i+1][j-1]+1+mod)%mod;
         }
         printf("Case %d: %d\n",++ca,(dp[0][len-1]+mod)%mod);
   }
   return 0;
}


基于STM32设计的计算器(实现基本运算) 当前文章介绍的是STM32+LCD触摸屏设计的一个触摸计算器功能,实现基本的加减乘除,二进制转换显示等功能。LCD屏使用的是3.5寸带触摸屏的显示屏,方便操作屏幕,MCU采用STM32F103ZET6。 阅读详情

相关推荐

保姆级教程:在S32DS 3.4上安装S32K3xx RTD 4.4驱动包(附常见安装失败排查)

本文提供在S32DS 3.4上安装S32K3xx RTD 4.4驱动包的详细教程,涵盖环境准备、分步安装指南及常见问题排查。特别针对NXP S32K3系列MCU开发者,解决网络问题、路径配置等安装难点,并分享进阶配置技巧和最佳实践,助力高效开发。

weixin_42696271的博客 287

Arithmetic Sequence(构造等差数列)

Arithmetic Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1846    Accepted Submission(s): 808 Problem Description A sequence b1,b2...

20164225的博客 4601

Qt快速读取Excel文件

网上很多读取方式都是如下形式,太慢了,打开文件+读取文件要6s以上,实在是受不了! QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_boo...

c+c++的博客 2万+

【NOIP 模拟题】[T1] 等差数列(dp)

燃檀亭榭渺 、空留余香袅袅

reverie_mjp的博客 450

lattice Diamond Programmer程序下载

Lattice Diamond Programmer(支持Lattice FPGA与CPLD程序下载)

qq_44385725的博客 5170

保姆级教程:用PCAN-View监控汽车CAN总线,从硬件连接到报文分析(附快捷键大全)

本文提供了一份详细的PCAN-View使用教程,涵盖从硬件连接到报文分析的全流程,特别适合汽车电子工程师和初学者。内容包括硬件准备、软件安装、核心功能操作、高级技巧及故障排查,并附有实用的快捷键大全,帮助用户高效监控和分析CAN总线数据。

weixin_42542669的博客 497

Subsequence(HDU3530 单调队列)

Subsequence(HDU3530 单调队列) 题目描述 给出一个长度为n的数列,求一个最长的区间,使得区间中最小值和最大值的差在[m,k]之间 输入 有多组测试数据 对于每组测试数据,第一行三个整数n,m,k。其中n表示序列的长度,范围[1,100000],m和k以及序列中的元素范围[0,1000000] 输出 For each test case, print the length o...

1262934560的博客 351

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。

weixin_28744423的博客 625

【区间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

综述性论文别再堆砌文献!用GPT-5.1 Thinking轻松攻克四大关键难点,真正实现高效高质撰写(附AI提示词)

逻辑构建上以往都是先梳理一篇文献的领域研究脉络,明确其发展阶段、核心议题等,再搭建初步的大纲,借助思维导图或者别的方式将筛选后的文献观点按主题归类到对应章节,理清楚每个章节间的递进或并列关系,最后再逐个章节进行补充过渡表述,那么做的目的其实就是摆脱文献堆砌问题。人工做法往往是对比不同文献的研究方法、数据来源与核心结论,再清晰标注每类成果的优缺点,找到文献中存在的争议焦点,找到之后再梳理争议产生的核心原因,最后在基于现有研究,推出还未被探索的研究方向,从而提炼出创新切入点。2)文献之间的相同点与不同点;

智能AI让学术科研更容易 173

python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)

本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。

@优快云盲敲代码的阿豪的博客 945

【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的博客 112

数据挖掘实战-基于随机森林算法的交通事故预测模型

本实验数据集来源于Kaggle,原始数据集共有209306条,该数据集包含不同地区和时间段的交通事故详细信息。它包括各种指标,例如事故日期、天气状况、照明条件、碰撞类型、受伤人数和车辆参与情况。数据涵盖多个地点和事故类型,可全面了解交通事故及其原因。具体包括:crash_date:事故发生的日期。Traffic_control_device:所涉及的交通控制设备的类型(例如交通灯、标志)。weather_condition:事故发生时的天气状况。

m0_64336780的博客 1万+

HDU4632 Palindrome subsequence(区间DP)

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

blanKey的博客 2157

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

(区间dp)HDU4632Palindrome subsequence

HDU4632Palindrome subsequence 题意&思路: 求一个字符串的回文子序列个数。 我们可以知道每个字母本身就是回文子序列,所以初始化dp[i][i]=1。 dp[l][r]可以分为dp[l+1][r]和dp[l][r-1],因为中间有重复的所以要减去dp[l+1][r-1],因为可能出现负数,所以要加上10007。 如果s[l]==s[r],dp[l][r]就还要加...

Z7784562的博客 253

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

(区间dp) hdu 4632 Palindrome subsequence

题目 hdu4632 题意: 输出字符串中所有子序列回文串(可以不连续)的个数。 as:aaa的所有子序列回文串是a(0),a(1),a(2),a(0)a(1),a(1)a(2),a(0)a(2),a(0)a(1)a(2) (括号里面的数字是这个字符在字符串中的坐标) 思路: 在区间i ~ j 中, 如果a [ i ] != a [ j ],dp [ i ] [ j ] = dp [ i + 1 ] [ j ] + dp [ i ][ j - 1 ] - dp [ i + 1] [ j - 1] as:在

ymxyld的博客 160

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

hdu4632 Palindrome subsequence 区间DP

hdu4632 多校4场题目 区间dp定义变量 f[i][j],表示 在区间 i到j的回文串的个数(注:i,j为字符串下标)则 对于区间i- j 如果s[i]==s[j] f[i][j]=f[i+1][j]+f[i][j-1]-f[i+1][j-1]+f[i +1][j-1]+1=f[i+1][j]+f[i][j+1]+1;如果 s[i]!=s[j] 那么 f[i][j]=f[i+1][j]...

weixin_30439067的博客 133

HDU4632-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, B...

weixin_43357583的博客 230

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

hdu 4632 Palindrome subsequence (区间dp)

题目链接:哆啦A梦传送门 题意:给一个字符串,找出这个字符串中有多少个子串是回文?子串可以相同(只要取得位置有不同的就行) 题解: 区间dp。 我们设 dp[i][j] 为区间 [i,j] 的回文数有多少? 那么就有转移方程: dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]。 (因为dp[i+1][j]与dp[i][j-1] 可能有公共部分,故我...

Jiandong 208

hdu4632 Palindrome subsequence--区间dp

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4632 题意:求一个字符串所有子串是回文的个数,注意子串可能是这样的情况:原串abcde,子串abd。 #define _CRT_SECURE_NO_DEPRECATE #include #include #include #include #include #include #

半壶老酒 758

Palindrome subsequence HDU - 4632 (区间dp)

Palindrome subsequence HDU - 4632 (区间dp) 题目链接 题目大意:求字符串有多少回文子序列。(这里的子序列可以不连续) input: 4 a aaaaa goodafternooneveryone welcometoooxxourproblems output: Case 1: 1 Case 2: 31 Case 3: 421 Cas...

deerly_的博客 281
上一篇: HDU 3280 Equal Sum Partitions(二分查找)
下一篇: HDU 5089 Assignment(rmq+二分 或 单调队列)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值