POJ 1159 Palindrome【LCS+滚动数组】【水题】

【poj 1159】Palindrome 题意&题解&代码(C++) poj dp 阅读详情

Palindrome
Time Limit: 3000MS Memory Limit: 65536K
Total Submissions: 63833 Accepted: 22254

Description

A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome. 

As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome. 

Input

Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct.

Output

Your program is to write to standard output. The first line contains one integer, which is the desired minimal number.

Sample Input

5
Ab3bd

Sample Output

2

Source


给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
设原序列S的逆序列为S' ,则最少需要补充的字母数 = 原序列S的长度 —  S和S'的最长公共子序列长度


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <map>
#include <cstring>
#define INF 0x3f3f3f3f
#define ms(x,y) memset(x,y,sizeof(x))
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;

const int maxn = 5010;
const int mod = 998244353;

int dp[2][maxn];

int main()
{
	string a, b;
	int n;
	cin >> n;
	cin >> a;
	b = a;
	reverse(a.begin(), a.end());
	int ans = -INF;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			if (a[i] == b[j])
				dp[i % 2][j] = dp[(i + 1) % 2][j - 1] + 1;
			else
				dp[i % 2][j] = max(dp[i % 2][j - 1], dp[(i + 1) % 2][j]);
			ans = max(ans, dp[i % 2][j]);
		}
	}
	cout << n - ans;
	return 0;
}




Cassava:轻量级CSV编辑器,解决大文件编辑与格式保持难题 CSV文件编辑常面临格式错乱、大文件卡顿和编码问题。专用CSV编辑器通过按规范解析引号与换行、定点修改字节区间,确保数据完整性。在数据清洗和ETL流程中,图形界面工具适合人工复核异常值,而脚本处理批量转换,两者结合提升效率。Cassava作为轻量级CSV编辑器,支持大文件不卡顿、按行列编辑,并保持原始格式,适用于运营、分析师和工程师快速核对与修正数据。 阅读详情

相关推荐

北大POJ部分题目答案(一些基础题目)

很多的POJ题目答案!1000~1008,1011~1014,1016,1017,1019,1028,1032,1045,1046,1047,1050,1061,1067,1068,1088,1102,1159,1163,1183,1207,1218,1226,1247,1256,1258,1298,1316,1323,1326,1338,1363,1396,1401,1423,1455,1458,1468,1477,1488,1503,1504,1517,1519,1528,1543,1547,1552,1265,1579,1604,1629,1656,1657,1658,1663,1664,1665,1674,1799,1844,1862,1922,1953,1969,1979,2000,2013,2017,2027,2039,2070,2080,2105,2109,2136,2140,2141,2159,2190,2196,2242,2247,2249,2262,2301,2309,2328,2350,2386,2388,2389,2390,2403,2405,2453,2479,2487,2498,2509,2521,2533,2538,2551,2562,2575,2578,2583,2591,2593,2601,2602,2608,2636,2663,2707,2719,2739,2801,2840,2871,2909,2924,3006,3030,3062,3077,3085,3094,3100,3173,3176,3210,3224,3302,3325,3438,3673,3036,2503,1731,2503,1065,3636

poj1159题解

//Memory 49240K Time 954MS //动态规划 #include <bits/stdc++.h> using namespace std; //存储记忆化结果 short result[5010][5010] = {0}; //记忆化函数 int getLength(string a, string b) { //当b字符串为空时 //即a和b的公共子串长度为0 for (int i = 0; i <= a.size(); i++)

xiaozhou163的博客 597

UE5实战技巧:TextRender高效集成中文字体与材质优化

本文针对UE5中TextRender组件显示中文的常见问题,提供了一套完整的实战解决方案。详细讲解了如何通过手动创建字体资产、精准控制字符集来优化性能,并重点介绍了通过调整材质中的Lerp节点参数(如设为-85, 92)来解决中文字体显示残缺和边缘模糊等核心难题,帮助开发者实现高效且美观的中文文本渲染。

weixin_28040125的博客 381

【原】 POJ 1159 Palindrome 回文 动态规划 解题报告

http://poj.org/problem?id=1159 方法1: c[i][j]表示:s[i...j]子字符串中最少需要插入多少个字符形成回文 c[1][n]为最终结果 初始值: c[i][i] = 0 c[i][j] = 0,if i>j 递归式: c[i][j] = c[i+1][j-1],if s[i]==s[j]...

ajiaxi111111的博客 289

数字IC设计实现之hierarchical flow系列(一)

数字IC设计实现之hierarchical flow系列(一) 最近这段时间小编又比较忙起来了,今天抽空来咖啡厅码字来了,刚到时脑子一片空白,不知道要分享些什么(项目结束后将会在知识星球上分享数字 IC 设计实现 Tapeout 前要review的那些 checklist)。突然间想起来有个星友希望小编分享些数字 IC 设计实现 hierarchical flow 的相关内容。考虑到现在大都采用这种方式来做 design 和实现,那就选这个 topic 了。限于篇幅和时间限制,今天只分享逻辑综合部分和布局布

weixin_37584728的博客 6000

STM32 SAI接口实战:用CubeMX快速配置多通道音频采集(附DMA优化技巧)

本文详细介绍了如何使用STM32的SAI接口通过CubeMX快速配置多通道音频采集系统,并提供了DMA双缓冲优化技巧。内容涵盖TDM模式配置、时钟同步、DMA优化及常见问题排查,帮助开发者高效实现高速数据采集应用。

weixin_42549037的博客 225

poj1159(Palindrome+回文串)

题目链接:http://poj.org/problem?id=1159         题目大意:回文串是顺序和逆序相同的字符串,该题求给一字符串,求出至少要给该字符串添加多少个字符使所得串是回文串。         分析:设s是所给串,S为所得串;                     A:S中与该字符对称的字符不属于s;                     B:   S中与该字符

鸟 的 天 空 822

linux下docker 部署onlyoffice社区版

Onlyoffice 是一款功能丰富的在线 Office 工具,类似 WPS 和 微软的 Office 套件。OnlyOffice Workspace 是由 OnlyOffice 推出的基于云计算的企业级在线协作办公平台,由文档服务(Document Server)、控制面板(Control Panel)、社区服务(Community Server)和邮件服务(Mail Server)四个组件构成,提供了文档、项目、成员、邮件等功能模块,支持文档多人协作、历史版本控制等功能,旨在帮助用户提高工作效率和工作质

axiaowua的博客 2382

poj1159(回文串+LCS+滚动数组)

题目链接:poj1159 /* 题目大意: 给一串字符,问最少添加几个字符能使这个字符串变成回文字符串 思路: 添加字符数 = 原串字符数 - 原串和其逆串的最长公共子序列的长度 然后就是用滚动数组求最长公共子序列,在0~1行之间滚动,滚动表达式为i&和(i-1)&1, 就是取余滚动 */ #include #include #include #include usi

no pains,no gains 1055

①电子产品拆解分析-暖手宝

电子产品拆解分析-暖手宝 ①按键三档调温暖手; ②长按进入氛围呼吸灯; ③安卓接口充电以及支持USB输出;

a6662580的博客 5295

【数据集】1970-2023年全球温室气体排放 GHG 数据集 EDGAR

1970-2023年全球温室气体排放 GHG 数据集 EDGAR

WW、forever的博客 1174

poj 1159 Palindrome LCS一维滚动数组优化

原题地址 http://poj.org/problem?id=1159最长公共子序列问题LCS:给出两个子序列A,B, 如 A B C B D A B B D C A B A 最长公共子序列为4: BCBA 递推公式: dp(i,j)为A,B当前长度为i,j的LCSdp(i,j)=dp(i-1,j-1)+1 while A[i]==B[j] d

Song 1277

【声纳与人工智能融合——从理论前沿到自主系统实战】第一章 声纳AI的数据基础:仿真、数据集与表征学习

该数据集的特点是包含了多种底质背景(沙地、泥地、碎石区)与噪声条件,适合验证模型的背景抑制能力。Urashima数据集由日本海洋研究开发机构(JAMSTEC)发布,基于自主水下航行器(AUV)采集,包含前视声纳序列数据,主要用于水下导航与避障算法评估,其数据包含了精确的姿态与深度标注,支持三维场景重建算法的训练。北约海洋研究与实验中心(CMRE)发布的CMRE datasets包含侧扫与合成孔径声纳数据,特别适用于跨传感器域自适应研究,数据集中包含了同一区域的多种声纳成像结果,为跨模态学习提供了基准。

u012133341的博客 103

POJ 1159:Palindrome ← 区间DP + 滚动数组 + LCS

本文把「求字符串最少插入字符成回文」的问题,转化为「最长公共子序列 (LCS)」的问题。之后,用奇偶滚动数组做极致空间优化。代码短小但含金量极高。主要依据一下两个核心点。 (1)字符串构建回文串的最少插入字符数 = 字符串长度 - 字符串最长回文子序列 (LPS) 的长度 (2)字符串的最长回文子序列 (LPS) = 字符串与其逆序字符串的最长公共子序列 (LCS)

hnjzsyjyj的专栏 602

Python爬虫实战:利用Requests-HTML与异步技术高效爬取B站视频信息及弹幕数据分析

B站的弹幕,远非简单的评论功能,它是一种独特的、实时互动的社交方式,是观众情感的集体宣泄和共鸣。无论是用于内容创作者优化视频结构,还是用于社会学、传播学的研究,亦或是简单的个人兴趣分析,都具备极高的价值。stop_words = {'的', '了', '是', '我', '你', '他', '她', '它', '在', '有', '不', '吗', '吧', '啊', '这', '那'}本文不仅是代码的堆砌,更注重原理的剖析、反爬策略的应对以及工程化的思考,旨在为读者提供一份紧跟技术前沿的实战指南。

2201_76125261的博客 390

jre9下载 jdk9

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

hdu 1513 Palindrome【LCS滚动数组】

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1513 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28195#problem/B Palindrome Time Limit: 4000/2000 MS (Java/Others)    Memory

free斩 1462

Camera2Demo

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

Palindrome POJ1159 LCS+滚动数组

传送门:POJ1159 题意:求给定字符串最少再添加多少个字符能形成回文串。 思路:先说感觉超奇妙的一种思路,先求出给定字符串和其逆串的LIS,题目所求即为n-LIS。

WA是一笔财富 329

IEM模型,地表粗糙度模拟

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ - 1159 - Palindrome (LCS + 优化)

题目传送:Palindrome 思路:一看题目思路很清晰,就是求出字符串s和倒转s后的字符串t的最长公共子序列,但是一看空间开销有点大,如果开int就会爆,5000*5000有100MB了,这里可以开short int,差不多正好可以过去,还有一种做法就是弄一个滚动数组,因为求LCS,根据状态转移方程可以知道,只需要前一行和当前行就行了,所以开个2*5005就OK了,具体看代码

Never say never 719

POJ 1159 - Palindrome 优化空间LCS

将原串和其逆序串的最长公共子序列求出来为M..那么2*n-M就是所需要加的最少字符..因为求出的M就是指的原串中"潜伏"的最长回文..     问题转化为求LCS..但是n最大到5000...裸的LCS需要dp[5000][5000]..显然会爆空间..     而LCS的时间复杂度接近O(n)...更新的时候之于上一层的数据有关...     所以空间不需要开5000*5000...滚动数

zzyzzy12 1214

POJ 1159 Palindrome(字符串变回文:LCS)

POJ 1159 Palindrome(字符串变回文:LCS) http://poj.org/problem?id=1159 题意: 给你一个字符串, 问你做少需要在该字符串中插入几个字符能是的它变成一个回文串. 分析: 首先把原字符串和它的逆串进行匹配, 找出最长公共子序列. 那么最长公共子序列的字符串肯定是一个回文串. 所以原串剩下的部分是不构成回文的. 我们只需要添加剩下部分的字符到对应位置, 原串自然就变成了一个回文. 所以本题的解为: n 减去 (原串与逆

code 1154

Palindrome(POJ 1159)

C - Palindrome Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1159 Appoint description:  System Crawler  (2015-02-13) Descript

luckyrass的专栏 439

【动态规划】【poj 1159】palindrome

【动态规划】【poj 1159】palindrome 问题 给定一个长度为n( 分析 设原序列S的逆序列为S',则这道题目的关键在于, 最少需要补充的字母数= 原序列S的长度— S和S'的最长公共子串长度 设 S 为原字符串,RS=reverse(S)即S反转后的字符串,LCS(S,RS)为S与RS的最长公共子序列,len(S)为S的长度。令S={a1~an},则RS={a

pi9nc的专栏 944

POJ1159Palindrome【LCS+滚动数组】

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 56228   Accepted: 19430 Description A palindrome is a symmetrical string, th

走一步再走一步 624
上一篇: HDU 6078 Wavel Sequence【dp递推】【好题】【思维题】
下一篇: 线段树题集
Archger
博客等级 码龄10年 79粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值