CodeForces 1096D(线性dp)
传送门
•题意
给出一个长度为n的字符串s,对于每个$s_{i}$有$a_{i}$的价值
让你删除最小的价值,使得字符串中不存在$hard$这个子序列
•思路
设dp[1]是不存在以$h$为前缀的最小代价
dp[2]是不存在以$ha$为前缀,也就是不存在$h$或者不存在$a$或者不存在$ha$的最小代价
同理,dp[3]是不存在以$har$为前缀的最小代价,dp[4]是不存在以$hard$为前缀的最小代价
dp[i]可以有dp[i-1]转移来,$dp[i]=min(dp[i]+a,dp[i-1])$
•代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int maxn=1e5+5; 5 char s[maxn]; 6 ll dp[5]; 7 int main() 8 { 9 int n; 10 cin>>n; 11 scanf("%s",s+1); 12 for(int i=1;i<=n;i++) 13 { 14 ll x; 15 cin>>x; 16 if(s[i]=='h') 17 dp[1]+=x; 18 else if(s[i]=='a') 19 dp[2]=min(dp[2]+x,dp[1]); 20 else if(s[i]=='r') 21 dp[3]=min(dp[3]+x,dp[2]); 22 else if(s[i]=='d') 23 dp[4]=min(dp[4]+x,dp[3]); 24 } 25 cout<<dp[4]<<endl; 26 }View Code
转载于:https://www.cnblogs.com/MMMinoz/p/11493700.html
CodeForces 1096D(线性dp)相关推荐
- CodeForces - 1096D Easy Problem(线性dp)
题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...
- CodeForces - 456C Boredom(线性dp)
题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...
- 0x51.动态规划 - 线性DP(习题详解 × 10)
目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...
- UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)
整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...
- 洛谷P2401 不等数列(线性DP)
本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...
- POJ - 1050 To the Max(最大连续子段和,线性dp)
题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...
- 牛客 - 「火」皇家烈焰(线性dp)
题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...
- CH 5102 Mobile Service(线性DP)
CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...
- 动态规划 —— 线性 DP
[概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...
- 【动态规划】线性dp P1043 数字游戏
思路: 这题和 [动态规划]P1018 线性dp:乘积最大_m0_52043808的博客-CSDN博客 十分类似,都是把一组数分成固定的部分,然后对分好的数进行特定的操作,求操作后所得的最值 所以,两 ...
最新文章
- pandas 增加列
- iOS集成sharesdk遇到的坑
- 大学基础课程之重要性
- 【37.50%】【codeforces 745B】Hongcow Solves A Puzzle
- 为什么很多人说 Java 不适合编写桌面应用?
- 【免费下载】2021年4月热门报告盘点下载
- 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
- 多媒体计算机相关知识,多媒体基础知识题库
- IP地址规划设计技术
- 比较两个txt文件的差异
- Python爬虫简介
- TensorFlow2.0损失函数基本原理、调用及自定义
- 桌面窗口管理器占用内存大的解决办法
- 《图像处理实例》 之 疏密程度统计
- 排序算法之——归并排序和快速排序
- 牛客网暑期ACM多校训练营(第二场)A .run
- Linux uptime 命令(75)
- android 数字滚动抽奖_Android滚动的数字更好看
- 达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取
- MySQL学习_数据库和表的基本操作
热门文章
- php composer 缓慢,php – 下载Laravel时,Composer非常慢
- 线性代数可以速成吗_英语真的可以速成吗?
- java testng 优化_java+testNG测试框架搭建----jenkins自动化执行
- ios textview间距_iOS 设置TextView控件内容行间距
- c调用python脚本如何获取结果_使用C++调用Python代码的方法详解
- maven-resources-plugin include 通配符
- tomcat 配置异常/404页面
- 【若依(ruoyi)】swagger 自定义 swagger-ui.html 的路径
- 【Get 以太坊技能】遇到错误 issues#14633 runtime: out of memory:cannot allocate 1413480448-byte block (737902592
- java set 接口_【Java提高十七】Set接口集合详解