poj3280 Cheapest Palindrome(回文串区间dp)
https://vjudge.net/problem/POJ-3280
猛刷简单dp第一天第三题。
这个据说是【求字符串通过增减操作变成回文串的最小改动次数】的变体。
首先增减操作的实质是一样的,所以输入时求min。
dp[i][j]表示第i个字符到第j个字符中修改成回文串的最小代价。由于回文串的特殊性,这里两层循环的遍历方式跟常见的略有不同
这算是回文串dp的一种典型题目典型方法吧。
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cstring> 5 #include<algorithm> 6 #include<cmath> 7 #include<map> 8 #define lson l, m, rt<<1 9 #define rson m+1, r, rt<<1|1 10 #define INF 0x3f3f3f3f 11 typedef unsigned long long ll; 12 using namespace std; 13 int n, m, a, b, dp[2010][2010]; 14 map<char, int> mp; 15 char s[2010], c; 16 int main() 17 { 18 cin >> n >> m; 19 cin >> s; 20 for(int i = 0; i < n; i++){ 21 cin >> c >> a >> b; 22 mp[c] = min(a, b);//因为增减操作的实质是一样的 23 } 24 for(int j = 0; j < m; j++){ 25 for(int i = j-1; i >= 0; i--){//遍历方式要注意 26 if(s[i] == s[j]){ 27 dp[i][j] = dp[i+1][j-1]; 28 } 29 else{ 30 dp[i][j] = min(dp[i+1][j]+mp[s[i]], dp[i][j-1]+mp[s[j]]); 31 } 32 } 33 } 34 cout << dp[0][m-1] << endl; 35 return 0; 36 }
转载于:https://www.cnblogs.com/Surprisezang/p/9027188.html
poj3280 Cheapest Palindrome(回文串区间dp)相关推荐
- 【leetcode】最长回文子串(区间dp)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- 回文串 --- 动态dp UVA 11584
题目链接: https://cn.vjudge.net/problem/34398/origin 本题的大意其实很简单,就是找回文串,大致的思路如下: 1. 确定一个回文串,这里用到了自定义的chec ...
- leetcode 131. 分割回文串(dp+回溯)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aab&quo ...
- 【LeetCode - 131】分割回文串(dp,dfs)
题目链接:https://leetcode-cn.com/problems/palindrome-partitioning/ 题目: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. ...
- bzoj 1710: [Usaco2007 Open]Cheappal 廉价回文【区间dp】
只要发现添加一个字符和删除一个字符是等价的,就是挺裸的区间dp了 因为在当前位置加上一个字符x就相当于在他的对称位置删掉字符x,所以只要考虑删除即可,删除费用是添加和删除取min 设f[i][j]为从 ...
- 数位DP 回文序列 POJ-3280 Cheapest Palindrome
Cheapest Palindrome [ POJ - 3280 ] 题目大意: 给定字符串s,长度为m,由n个小写字母组成.在s的任意位置增删字母,把它变成回文串,增删特定字母的花费不同,求最小花费 ...
- LeetCode 132. 分割回文串 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: ...
- 回文串分割:经典dp
题目 做法 好题啊. 题目 lightoj 1044 Palindrome Partitioning 给出一个字符串,求最少把它分成多少个回文串. 做法 要求的时间复杂度是O(n2)O(n2)O(n^ ...
- AK F.*ing leetcode 流浪计划之回文串
欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 一.简介 二.解题步骤 三.作用 四.经典算法介绍 判断一个串是否为回文串(单次查询) 普通情况 判断指定字符 多次子 ...
最新文章
- 计算机实验书,[计算机软件及应用]实验书.doc
- Object C为UILabel添加点击事件
- 芝麻信用_别忘查看支付宝芝麻信用分,这些特权别浪费
- HDU - 6333 Problem B. Harvest of Apples(莫队变形+思维+组合数学,好题)
- HOJ 2678 Stars
- topcoder srm 698 div1 -3
- 外媒:华为曾大量采购联发科5G智能手机芯片天玑
- MPMoviePlayerController属性,方法,通知整理
- 关于在CLASSWIZARD中找不到工作区间中的类的解决方法
- sql 将8位字符串转换成日期型
- 主梁弹性模量计算_桥梁支座详解全攻略!图文+计算详解,值得收藏!
- oracle磁带库清洁带标签,LTO-1/2/3/4/5/6/7/8 Ultrium数据磁带 清洗带 清洁带 磁带标签批发...
- 前端中适配各种手机模式的一种解决办法
- rest api如何创建_我的宝宝走了一步,创建了一个REST API并进行了码头化
- 设计一个灵活、通用、方便的权限管理系统
- Dubbo-接口数据序列化Serialization
- 实现了一个简单的以图搜图功能(带代码)
- 赫尔维兹_勒奇超越函数(matlab自编函数)
- 最新IOS xcode12真机调试步骤
- 25岁同济硕士生斩获CVPR 2022 最佳学生论文奖
热门文章
- mysql 表 字符集_如何查看MySQL数据库/表/列的字符集?
- 【MYSQL笔记】复制删除和表和记录
- 开源安卓播放器:Dolphin Player 简单分析
- matlab butter 低通,matlab butter 用法
- java 综合练习_Java 之综合练习
- 吸顶灯怎么固定天花板_什么是吸顶灯?吸顶灯的材质和其与吊顶灯的区别分析...
- 【代码源 Div1 - 109】#454. Minimum Or Spanning Tree(最小生成树,边权按位或,贪心,并查集) CF1624G
- linux7删除网卡文件,CentOS 7下删除virbr0网卡信息
- mysql 小时数列,MySql时区问题
- 适合pythonpandas的软件_11个Python Pandas小技巧让你的工作更高效(附代码实例)