HDU4745--区间DP+回文串
这题的题意为,给你一个环状的字符串,有两只兔子分别从某任意的石头上开始跳跃。一只顺时针跳、一只逆时针跳。两只兔子每一次落脚处石头的质量都相同。兔子要一步一步的跳,且不能跳到之前跳到过的地方。总的来说,就是一只兔子最多就只能跳一整圈。每一次两只兔子落点的权值都相同,问兔子最多可以跳几次。这一题可以简化,用区间DP来求所有区间内的最长回文串长度。之后一遍for循环遍历,把区间[0,n-1]划分成[0,k]和[k+1,n-1]。找到这两个区间回文串长度和的最大值,即为答案。证明如下:
我们把区间分成了两部分 我们假设是串A和串B 我们可以把串A分成镜面对称的字符串a和字符串a,同理分解B。相当于拆成了43个串,但a和a连续 b和b连续。两个兔子设为从同一点出发。概念如图所示。
因此,求得A和B的最大回文长度之和,即求到了结果。代码如下:
#include<iostream>
#include<string.h>
using namespace std;
int T,i,j,k,l,n,m;
int a[][];
int c[];
int main()
{ while(cin>>n&&n!=)
{
memset(a,,sizeof(a));
for(i=;i<n;i++) cin>>c[i];
for(i=;i<n;i++) a[i][i]=;
for(i=n-;i>=;i--)
for(j=i+;j<n;j++)
{
if(c[i]==c[j]) a[i][j]=a[i+][j-]+;
else a[i][j]=max(a[i+][j],a[i][j-]);
}
int ans=;
for(i=;i<n-;i++) ans=max(ans,a[][i]+a[i+][n-]);
cout<<ans<<endl; }
}
HDU4745--区间DP+回文串的更多相关文章
- CodeForces-245H:Queries for Number of Palindromes(3-14:区间DP||回文串)
Times:5000ms: Memory limit:262144 kB 给定字符串S(|S|<=5000),下标由1开始.然后Q个问题(Q<=1e6),对于每个问题,给定L,R,回答区间 ...
- LightOJ - 1205:Palindromic Numbers (数位DP&回文串)
A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...
- poj 1159 dp回文串
题意:添加最少的字符使之成为回文串 #include<cstdio> #include<iostream> #include<algorithm> #include ...
- poj 3280 Cheapest Palindrome ---(DP 回文串)
题目链接:http://poj.org/problem?id=3280 思路: dp[i][j] :=第i个字符到第j个字符之间形成回文串的最小费用. dp[i][j]=min(dp[i+1][j]+ ...
- hdu 4632区间dp 回文字串计数问题
Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65535 K (Java/ ...
- 1159--Palindrome(dp:回文串变形2)
Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 53431 Accepted: 18454 Desc ...
- GDUT 校赛02 dp回文串
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABSkAAAIhCAIAAAAtmainAAAgAElEQVR4nOzdfaxkd33n+ZJacstqa3 ...
- [LeetCode] Palindrome Partitioning II 拆分回文串之二
Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...
- 集训第五周动态规划 H题 回文串统计
Hrdv is interested in a string,especially the palindrome string.So he wants some palindrome string.A ...
随机推荐
- Ubuntu16.04 本地提权漏洞复测过程
一.漏洞概述 Ubuntu 16.04 版本且unprivileged_bpf_disable 权限没有关闭的情况下就会存在 提权漏洞查看方式:1,cat /proc/version 查看系统版本 2 ...
- css的position,float属性的理解
我们知道,html是按照普通流来加载的,这个时候我们有些需求就不好实现.因此出现了非普通流: 1.普通流:按照顺序正常的排列,长度或不够就往下挤.position默认的static 2.非普通流:脱离 ...
- FTPClient工具类
package com.vcredit.ddcash.server.commons.net; import com.vcredit.ddcash.server.commons.model.FtpPar ...
- 有多个正整数存放在数组中,编写一个函数要求偶数在左边由小到大顺序放置,奇数在右边,也是由小到大顺序放置,Java实现
思路: * 1.首先分左右 * 2.分好再排序(左边和右边都单独排序) 第一步:分左右 可得注意了: 大体思路最先是从两头出发分成4种情况讨论(左or右,奇数or偶数)循环处理,出口是双层的嵌套循环( ...
- 谁考了第k名
题目描述: 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩. 输入: 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k ...
- 黏包:传输过程中 read(不可靠)传输时由于网络造成黏包
但是你在读取本地文件 不涉及传输文件时 read还是可靠的
- 最全的MonkeyRunner自动化测试从入门到精通(6)
eclipse中进行插入PyDev插件的使用步骤一:monkeyrunner环境变量的配置.在Android Sdk中的tools目录下,拷贝路径,进行配置环境变量.与上面的配置方法一样,在这里不做过 ...
- nlp底层技术列举
其实目前除了之前博客写到的一些关于自然语言处理用到的知识点之外,很多其他nlp技术只是会用但是不了解原理,先整体分个类,之后再仔细分析吧. 上图是https://www.sohu.com/a/1386 ...
- 苹果审核被拒,解析奔溃日志.txt转crash文件
1. 桌面新建一个文件夹,用来存放crash相关的东西.取名crash 2.下载苹果官方邮件里给的后缀名为 .txt 的被拒附件(这三个txt格式文件为苹果返回的崩溃日志文件),把这三个文件放在刚新建 ...
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...