hdu 4632 子字符串统计的区间dp
题意:查找这样的子回文字符串(未必连续,但是有从左向右的顺序)个数。
简单的区间dp,哎,以为很神奇的东西,其实也是dp,只是参数改为区间,没做过此类型的题,想不到用dp,以后就
知道了,若已经知道【0,i】,推【0,i+1】, 显然还要从i+1 处往回找,dp方程也简单:
dp[j][i]=(dp[j+1][i]+dp[j][i-1]+10007-dp[j+1][i-1])%10007; 减去中间一段重复的
if(s[i]==s[j])dp[j][i]=(dp[j][i]+dp[j+1][i-1]+1)%10007; 这里不忘记,新加入的和结尾构成的情况。
PS:弱菜还需努力!下面俩点注意。
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
using namespace std;
long long dp[1005][1005];
int main()
{int T;cin>>T;string s;int cs=1;while(T--){cin>>s;//memset(dp,0,sizeof(dp));int len=s.size();for(int i=0;i<len;i++)dp[i][i]=1;for(int i=0;i<len;i++){for(int j=i-1;j>=0;j--){dp[j][i]=(dp[j+1][i]+dp[j][i-1]+10007-dp[j+1][i-1])%10007; // 注意1,当有减法的时候,取模要加个模!否则负数!if(s[i]==s[j])dp[j][i]=(dp[j][i]+dp[j+1][i-1]+1)%10007; //注意2:取模的时候不要用+= }}printf("Case %d: %d\n",cs++,dp[0][len-1]);}return 0;
}
转载于:https://www.cnblogs.com/yezekun/p/3925775.html
hdu 4632 子字符串统计的区间dp相关推荐
- HDU 5693:D Game(区间DP)
D Game Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- HDU 5115 (杀狼,区间DP)
题意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼时, ...
- P4302-[SCOI2003]字符串折叠【区间dp】
正题 题目链接:https://www.luogu.com.cn/problem/P4302 题目大意 一个字符串,对于一个字符串AAA.可以将连续的nnn个AAA缩成n(A)n(A)n(A).求最短 ...
- HDU 5115 M - Dire Wolf 【区间dp】
传送门 Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if ...
- HDU 5968 异或密码(区间dp)
Problem Description 晨晨在纸上写了一个长度为N的非负整数序列{ai}.对于这个序列的一个连续子序列{al,al+1,-,ar}晨晨可以求出其中所有数异或的结果 alxoral+1x ...
- 【剑指offer】最长不含重复字符的子字符串
题目: * 面试题48:请从字符串中找出一个最长的不包含重复字符的子字符串, * 计算该最长子字符串的长度.假设字符串中只包含从'a'到'z'的字符. * 例如,在字符串中'arabcacfr',最长 ...
- leetcode - 467. 环绕字符串中唯一的子字符串
解题思路:dp[i]表示以第i个字母结尾的最长的子字符串的长度.那么字符串P的不同子字符串的数量为dp[0] + dp[1] + - + dp[25] (从a一直加到z).循环P中的每一个字符,不断更 ...
- Palindrome subsequence HDU - 4632 区间dp|记忆化搜索
// 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...
- HDU 2476 String painter (区间DP)
题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...
最新文章
- mysql查询语句在哪里编写_mysql编写语句:更新查询
- 461在全志r16平台tinav3.0系统下使用地磁计QMC5883L
- php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren
- 交互设计精髓_设计空间的精髓
- 没找到rpm命令_Mysql的命令总结和PyMysql
- js 省市下拉列表联动
- 页游中的十大经典游戏题材
- Jquery瀑布流插件
- 《数值分析(原书第2版)》—— 1.5 不需要导数的根求解
- Atitit.日志系统slf4j的使用
- 梦龙即时通讯软件测试自学,梦龙网络计划教程.pdf
- excel游戏_Excel Jawbreak游戏
- Postman中文版下载[9.12.0]
- 编程语言python这个词怎么翻译_五大理由从 Python 转到 Go 语言【已翻译100%】...
- 软件测试学习 之 进阶之路
- 动态时间规整算法: 从DTW到FastDTW
- win10 系统网络驱动出现黄色感叹号
- 【项目问题总结】4:修改操作的重复性验证逻辑
- 语音差分编码(DPCM)的实现与改进——Python实现
- 计算机程序设计基础课程设计(C语言)[2023-02-28]