POJ3280

stc8g1k08硬件iic读取aht20温湿度及0.91寸oled显示 使用stc8g1k08读取aht20温湿度及0.91寸oled显示。 阅读详情

题意:对一个字符串进行插入删除等操作使其变成一个回文串,但是对于每个字符的操作消耗是不同的。求最小消耗。
思路:
我们定义dp [ i ] [ j ] 为区间 i 到 j 变成回文的最小代价。
那么对于dp【i】【j】有三种情况
首先:对于一个串如果s【i】==s【j】,那么dp【i】【j】=dp【i+1】【j-1】
其次:如果dp【i+1】【j】是回文串,那么dp【i】【j】=dp【i+1】【j】+min(add【i】,del【i】);
最后,如果dp【i】【j-1】是回文串,那么dp【i】【j】=dp【i】【j-1】 + min(add【j】,del【j】);
显然是一个dp问题,可以设定状态dp[i][j]表示从i~j这一段变成回文的最小消耗,显然状态转移就是
if(s[i]==s[j])
dp[i][j]=dp[i+1][j-1];
else
dp[i][j]=min(dp[i+1][j]+w[s[i]-‘a’],dp[i][j-1]+w[s[j]-‘a’]);
首先明确的就是如果已经将区间[i,j]整理成为一个回文串(不管中间有多少个字符或者是以什么字符开头或者结尾),当DP到区间[i,j+1]时,我们可以在i-1的位置添加一个str[j+1]字符,或者将在j+1处的字符删除,得到一个新的回文串,而且我们这两步操作都没有借助或者影响区间[i,j]的情况。
因此虽然删除和插入不同,但是这两种操作是等价的,这头加和那头减是一样的,那我们就可以将添加或者删除整合在一起,对字符str[j+1]的操作就按照添加和删除中花费最小的一个计算

另一个注意点是两重循环的方向,起点i应当趋0,终点j应当趋M
这里写图片描述

代码:

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int f[2005][2005];
int main()
{
    string str;int n,m,i,j,cost[30];
    cin>>n>>m;getchar();getline(cin,str);
    for(i=1;i<=n;i++){
        char c;int cost1,cost2;cin>>c>>cost1>>cost2;
        cost[c-'a']=min(cost1,cost2);
    }
    for(i=str.size()-2;i>=0;i--){
        for(j=i+1;j<str.size();j++){
            if(str[i]==str[j])f[i][j]=f[i+1][j-1];
            else{
                f[i][j]=min(f[i+1][j]+cost[str[i]-'a'],f[i][j-1]+cost[str[j]-'a']);
            }
        }
    }
    cout<<f[0][str.size()-1]<<endl;

    return 0;
}
【Python深度学习】做深度学习训练时,如果数据集太大,无法一次性加载进GPU,应该如何做? 方法核心思想优点缺点适用场景实现复杂度小批量训练(Mini-Batch Training)与数据加载器(DataLoader)将数据集划分为小批量,每次只加载一个小批量到GPU中进行训练。- 易于实现- 是深度学习的标准做法- 支持多进程加载- 内存可能成为瓶颈- 需要调整批量大小避免内存不足适用于大部分场景低数据分片与分布式训练(Data Sharding & Distributed Training)将数据集分片,每个GPU或节点处理其中一部分数据,分布式训练。 阅读详情

相关推荐

树莓派34/100 - Pico读取MPU6050加速度和陀螺仪传感器数据

树莓派Pico连接MPU-6050模块(三轴陀螺仪+三轴加速度),读取运动姿态数据。

申龙斌的程序人生 5087

题解poj3280(区间dp)

poj3280 题目大意:给定一个字符串S,字符串S的长度为M(M≤2000),字符串S所含有的字符的种类的数量为N(N≤26),然后给定这N种字符Add与Delete的代价,求将S变为回文串的最小代价和。 题解: 设dp[i][j]是区间让字符串区间i到j变为回文串的最小代价 那么考虑计算 既然是dp那么就要有这样一个思想:由已经知道的算出未知的 如果s[i]!=s[j] 对于区间【i,j】的最小代价我们可以是由【i+1,j】这个区间然后对s[i]这个字符删掉或者在j+1位置加上一个s[i]变成回文串 同

erxiong111的博客 496

Windows11安装UE4+Airsim

Windows11安装UE4+Airsim

Legendyyy的博客 3743

poj3280 Cheapest Palindrome(动态规划)

题目链接:http://poj.org/problem?id=3280 题目大意:有一个字符串由N(1&lt;=N&lt;=26)种小写字母组成,长度为M(1&lt;=M&lt;=2000), 在字符串中任意位置添加或删除字母使字符串变成一个回文串,添加和删除有一定的花费。求这个最小花费。 动态规划策略:设dp[i][j]为字符串从 i 到 j 成为回文串的最小花费。 dp[i][j]可能...

hopyGreat的博客 350

华为od 面试八股文_C++_01_含答案

华为od 面试八股文_C++_01_含答案

MISAYAONE的博客 5588

逆向分析顶象5代各类验证码类型的图片还原方法(附源码)

6.刷新滑块验证码图片,会进入之前的for循环断点,分析此处的代码会发现,该循环循环了处理了n字符串的值,取出n字符中的值并使用charCodeAt生成Unicode 编码,然后又调用了a函数,如果a函数返回true就会把之前生成的Unicode编码+1,a函数参数分别是c数组和Unicode取余32后的值,然后再把Unicode取余32后的值push进c数组,这里的n值为滑块碎片背景图的name。2.搜索"ranges":,会找到ranges赋值的地方,在此处代码断点,并点击跳过断点,结束此次调试。

老衲爱洗头的博客 1195

poj解题报告——3280

题意:给你一串字符,通过添加删除其中的一部分,使其变成一个回文串,并且花费最小(添加删除都有权值)         分析:删除一个字符和添加一个字符是等价的,考虑最小即可,设dp[i][j]表示在区间i j范围内构成回文的最小花费,if 当前匹配的两个字符相等,str[i] == str[j] 那么dp[i][j] = dp[i+1][j-1];else则把左边添加删除一个右边的值   或者在右

Lingfu74的专栏 543

小目标检测之改进的YOLOV11算法

MASF-YOLO通过多尺度特征聚合注意力增强自适应融合三大核心创新,显著提升了无人机视角下的小目标检测性能。

hasakie的博客 1717

POJ3280(动态规划)

最近寒假回家很无聊,荒废了一个星期的算法,有点罪恶                   题目意思很简单,类似的题目碰到过一些,动态规划解决,dp[i][j]表示从i开始到j结束的串行成回文的最小代价,递推方程如下: D[s]为删除s的代价,A[s]为添加s的代价。 假设字符串为S1..Si..Sj...Sm min中的五项分别对应于以下几种情况,          Case1:

adolphxy的专栏 829

Allegro DXF板框导入及将元器件精准放置到特定位置操作

DXF板框导入 选择File-> import -> DXF 点开DXF file 查找文件 3. 选择需要导入的DXF文件 4. 通常结构文件使用的是米制单位,将单位选择为mm,如果不确定DXF 图纸坐标大小,建议勾选incremental addition,软件根据实际DXF图纸大小自动调整背景坐标尺寸以适应DXF图纸 5.打开Edit/View layers 6. 勾选 select all,选择DXF文件所有层;class 一栏选择BOARD GEOMETRY;subcla

sinat_15677011的博客 1万+

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

本文讲述英飞凌TC3xx的通用计时器GTM的架构。

无所适从的我的博客 4595

POJ - 3280 (区间dp+记忆化搜索)

题意:给定一个字符串S,字符串S的长度为M(M≤2000),字符串S所含有的字符的种类的数量为N(N≤26),然后给定这N种字符Add与Delete的代价,求将S变为回文串的最小代价和。 经典区间dp问题,对于多维dp,递归是一个很好写且好理解的方法。 对于一个字符串s,有左指针 i 和右指针 j。 若s[ i ] == s[ j ] , f[ i ][ j ] = f[ i+1 ][ j-1 ]...

weixin_43670649的博客 246

OpenClaw实战五|企业文档AI助理:对接内部知识库+自动答疑+文档生成,员工自助查资料零等待

企业最大的隐性成本,不是设备、不是房租,而是内部知识的混乱与流失。OpenClaw企业文档AI助理,本质是给企业做了一个7×24小时在线、永不疲倦、精准无误、自动更新的内部知识管家。它不替代HR、行政、IT,而是把他们从无穷无尽的重复问答、机械文档编写里解放出来,去做更有价值的管理、服务、优化工作。对中小企业来说,不用买昂贵的知识库系统、不用招开发、不用做复杂集成,一台私有化服务器,两天就能落地,性价比拉满。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 144

[poj]3280 Cheapest Palindrome 题解

[poj]3280 Cheapest Palindrome 区间dp 题意: 给你长度为m的字符串,其中有n种字符,每种字符都有两个值,分别是插入这个字符的代价,删除这个字符的代价,让你求将原先给出的那串字符变成一个回文串的最小代价。 M<=2000 设 dp[i][j] 为区间 i~j 的回文串的最小代价 现在考虑怎样从别的状态转移到 区间i~j 三种情况 首先 ...

547478006的博客 191

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

poj 3280

poj 3280 题目大意: 给定一个长度为M(1<=M<=2000)字符串S,这个这字符串可以做下面2个操作: 1.添加一个单词 2.删除一个单词 然后会给定N(1<=N<=26)个单词的添加代价和删除代价 求把这个字符串变成回文字符串的最小代价 区间dp: 设置状态; f[i,j]表示 i 到 j 这个区间变成回文字符的最小代价 状态计算: f[i,j]要变成回文字符串的话,有2种情况: 1.s[i]==s[j] ,这时候f[i,j]=f[i+1,j-1] 2.s[i]!=s[j

weixin_54618249的博客 236

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

poj(3280)Cheapest Palindrome(区间dp)

题目链接:http://poj.org/problem?id=3280 题意:给出一个由m中字母组成的长度为n的串,给出m种字母添加和删除花费的代价,求让给出的串变成回文串的代价。 分析:我们知道求添加最少的字母让其回文是经典dp问题,转化成LCS求解。这个是一个很明显的区间dp 我们定义dp [ i ] [ j ] 为区间 i 到 j 变成回文的最小代价。 那么对于dp【

大神养成中..... 5558

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

poj3280(回文串,DP)

题目链接: /* 题目大意: 一串字符,每添加一个字符或删去一个字符都要付出相应的花费 求将这串字符变成回文串的最小花费 思路: 删除一个字符和添加一个字符是等价的,所以考虑最小的一种即可 d[i][j]表示区间[i,j]的最小花费 当a[i] == a[j]时, 区间[i,j]的花费就等于区间[i+1,j-1]的花费 当a[i] != a[j]时 添加

no pains,no gains 959

POJ-3280-Cheapest Palindrome

POJ-3280-Cheapest Palindrome 传送门 这道题。区间dp 求把所给串变成回文串的最小代价。 题目给出由n个小写字母构成的长度为m的串。 然后把每个字母增加和删除的代价给出来了 问最小代价 其实这个地方的增加和删除其实差不多把。。 开头删等同于在末尾加上去 比如abcb 你在开头删除a和在末尾加上a的效果是一样的=-=对吧 然后我们取删除和添加的最小值就行了 存在w[]里面...

qq_44624316的博客 202

[POJ 3280]Cheapest Palindrome[DP]

题目链接:[POJ 3280]Cheapest Palindrome[DP] 题意分析: 有一个长度为m的字符串,全都为小写字母,给出串中每个字母删除和插入的代价,问:要构成回文串,最少需要多少代价? 解题思路: 设dp[i][j]为字符串s[i ~ j]变成回文串需要的最小代价。那么有转移方程: dp[i][j] = dp[i + 1][j - 1] (s[i] == s[j]);

闲停 390

POJ 3280 Cheapest Palindrome(区间DP)

嗯... 题目链接:http://poj.org/problem?id=3280 这道题首先要清楚:对于构成一个回文串,删去一个字符和加上一个字符是等效的,所以我们取花费较少的情况。 转移方程为:dp[i][j] = dp[i-1][j-1](s[i]==s[j])因为已经构成回文串,并且dp[i-1][j-1]是最优的。       dp[i][j] = min(d...

weixin_30871905的博客 735

POJ3280 Cheapest Palindrome

题目链接:http://poj.org/problem?id=3280 题目大意就是给你一个字符串,和字符串中每一个字母删除或者添加所需要付出的代价,问把它变成一个回文字串所需要的最少的代价。 首先明确一个问题,如果我们在字符串中某一个位置删除一个字符,那么一定能找到一个等价的添加的方法,所以可以把删除和添加统一到一起,然后这道题的状态就简单了。 dp[i][j]表示的是区间[i, j]内形

浅雨歌 1017

POJ3280题解(视频讲解区间dp)

视频讲解: POJ3280题目理解 非常抱歉:因中途录制原因只录制了主要部分,下面进行补充。 如果str[i]==str[j],dp[i][j]=dp[i+1][j-1] 如果不相等,dp[i][j]=min(dp[i][j],dp[i+1][j]+cost[str[ i]-‘a’],dp[i][j-1]+cost[str[j]-‘a’]) 至于循环为什么i是从0-m,j是i-m的

stn54999的博客 293

POJ - 3280 Cheapest Palindrome 区间DP

传送门:POJ3280 题意:给定一个字符串,要将其变成回文串,删除一个字母和添加一个字母都有不同的花费,问最小花费是多少。 思路:这题我真是没有思路,太弱了。。 正解:dp[i][j]表示将[i,j]区间的字符串变成回文串的最小花费,然后又如下转移: 如果s[i] == s[j]  那么 dp[i][i] = dp[i + 1][j - 1] 否则 dp[i][j] = min(dp[

WA是一笔财富 306

【动态规划】POJ 3280 Cheapest Palindrome

这段时间要沉迷刷题一段时间了,就让优快云陪我一起吧! 一、题目大意 这道题的题意很简单,第一行给出两个整数N和M,N表示组成字符串的字符种类数,M表示字符串的字符个数,然后第二行给出一个字符串,之后N行,每行给出一个字符添加和删除的开销,求解要把整个字符串通过添加或删除字符调整为回文字符串所需的最小开销。 二、题目思路以及AC代码 这题可能在大佬面前就是送分题了,但对我还是需要思考的。 首先...

Johnson的博客 182

【poj 3280】 Cheapest Palindrome 题意&题解&代码(C++)

poj dp

曾经追梦的happy时光 720

poj 3280 Cheapest Palindrome

题目链接:http://poj.org/problem?id=3280 题目大意:题目背景就不叙述了。有一个字符串,可以在字符串的任意位置添加或者删除字符,删除或者添加都需要花费,每个字符的花费均不同,为了使原字符串变为回文,求出最小花费。                   回文:如abcba,abccba都是回文 分析:1、添加和删除的操作本质是一样的,所以只要保存两者的最小值就可以了。

坚持迟早会有收获的!!! 205
上一篇: POJ3616
下一篇: URAL - 1423
HumveeA6
博客等级 码龄17年 12粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值