给一个字符串,,需要移除一些字符,使得剩下的字符串中不存在“hard”子序列,移除一个字符会产生一定的花费,求最小的花费。
首先肯定是移除同一种字符,不能既删‘h’,又删’a’。dp[i][j]表示考虑到第i个字符时选择移除"hard"中前j个字符的最小的花费
则比如s[i] 是’a’ 时,需要考虑的是前i-1个移除‘h’和‘a’的费用,因为’r’和’d’对当前的’a’无影响,
则dp[i][2] = min(dp[i-1][2] + val[i],dp[i-1][j-1])
否则 dp[i][2] == dp[i-1][2]

#include<bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i = 0;i<int(n);i++)
typedef long long LL;
const LL INF = 1e18;
LL n,val[101010],dp[101010][6],ans = INF;
char s[101010],t[] = {"hard"};int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//freopen("data.in","r",stdin);//freopen("data.out","w",stdout);cin>>n>>s+1;for(int i = 1 ;i<=n;i++) cin>>val[i];for(int i = 0;i<=n;i++)for(int j = 0;j<5;j++) dp[i][j] = INF;for(int i = 1;i<5;i++) dp[0][i] = 0 ;for(int i = 1;i<=n;i++)for(int j = 1;j<5;j++)if(s[i] != t[j-1]) dp[i][j] = dp[i-1][j];else dp[i][j] = min(dp[i-1][j-1],dp[i-1][j]+val[i]);for(int i = 1 ;i<5;i++)   ans = min(ans,dp[n][i]);cout<<ans;return 0;
} 

Codeforces 1096D相关推荐

  1. CodeForces 1096D(线性dp)

    传送门 •题意 给出一个长度为n的字符串s,对于每个$s_{i}$有$a_{i}$的价值 让你删除最小的价值,使得字符串中不存在$hard$这个子序列 •思路 设dp[1]是不存在以$h$为前缀的最小 ...

  2. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  3. 【CodeForces - 1096D】Easy Problem(dp,思维)

    题目大意: 现在有一个由小写字母组成的字符串,去掉这个字符串的第i个位置的字符会有ai的代价.你的任务是去掉这个字符串中的一些字符使得该字符串中不包含子序列hard,且去掉字符的代价之和尽可能小. 输 ...

  4. 【Codeforces 1096D】Easy Problem

    [链接] 我是链接,点我呀:) [题意] 让你将一个字符串删掉一些字符. 使得字符串中不包含子序列"hard" 删掉每个字符的代价已知为ai 让你求出代价最小的方法. [题解] 设 ...

  5. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  6. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  7. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  8. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  9. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  10. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

最新文章

  1. Activity的setResult方法
  2. 奇怪,不能上GOOGLE了...你们也是这样吗?
  3. git 冲突覆盖_git pull冲突解决之强制覆盖
  4. QT的QMovie类的使用
  5. SpringBoot使用日志
  6. python用电度数设计_无所不能的Python之配电设计自动化系统
  7. h5大转盘 php,HTML5 canvas实现中奖转盘的实例代码
  8. excel手机版_手机自带便签如何导入新手机?试试这款便签同步助手
  9. HTML文字阴影荧光,小编,文章里的“发光”文字怎么做的?
  10. 【转载】20款密码破解工具
  11. 如何巧妙的申请换部门_职场:如何跟领导提调换工作岗位?这几点你要考虑清楚!...
  12. 脚本小子-------使用python脚本完成mysql数据库备份、恢复、查询并生成excel
  13. 活动预告 | 伍鸣博士受邀参加深链财经“2020非共识大会”
  14. 4.SVG 矩形(rect)
  15. java 中PATH, -classpath, -Djava.library.path 的功能和区别
  16. FCN网络(Fully Convolutional Networks)
  17. Unity DOTS学习导航
  18. 通用 Mapper UUID 简单示例
  19. 通俗的解释卡尔曼滤波(Kalman Filter)以及其Python的实现
  20. rust怎么调整夜晚亮度_摄影:手机怎么拍夜景?学会这4个拍摄技巧会很有帮助...

热门文章

  1. VMware WorkStation虚拟机的安装及使用
  2. 查看英伟达NVIDIA显卡型号
  3. 【C语言】大小写转换
  4. php apache 假死,解决apache兼容性及慢或假死问题
  5. Google 2017 上海开发者大会 总结
  6. [转载]物理大神的八卦完整版——大爱物理
  7. 教育企业邮箱购买哪个好用,还有英文邮件系统?
  8. html 标签置底,学习笔记:让元素永久置底的几种方案(css only)
  9. TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head forObject Detection on Drone-captur
  10. Open Drain vs Push Pull