传送门

•题意

给出一个长度为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)相关推荐

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

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

  2. CodeForces - 456C Boredom(线性dp)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...

  3. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  4. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  5. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  6. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  7. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

  8. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

  9. 动态规划 —— 线性 DP

    [概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...

  10. 【动态规划】线性dp P1043 数字游戏

    思路: 这题和 [动态规划]P1018 线性dp:乘积最大_m0_52043808的博客-CSDN博客 十分类似,都是把一组数分成固定的部分,然后对分好的数进行特定的操作,求操作后所得的最值 所以,两 ...

最新文章

  1. pandas 增加列
  2. iOS集成sharesdk遇到的坑
  3. 大学基础课程之重要性
  4. 【37.50%】【codeforces 745B】Hongcow Solves A Puzzle
  5. 为什么很多人说 Java 不适合编写桌面应用?
  6. 【免费下载】2021年4月热门报告盘点下载
  7. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
  8. 多媒体计算机相关知识,多媒体基础知识题库
  9. IP地址规划设计技术
  10. 比较两个txt文件的差异
  11. Python爬虫简介
  12. TensorFlow2.0损失函数基本原理、调用及自定义
  13. 桌面窗口管理器占用内存大的解决办法
  14. 《图像处理实例》 之 疏密程度统计
  15. 排序算法之——归并排序和快速排序
  16. 牛客网暑期ACM多校训练营(第二场)A .run
  17. Linux uptime 命令(75)
  18. android 数字滚动抽奖_Android滚动的数字更好看
  19. 达梦 DM 执行SQL报字符串截断如何分析定位/超长文本截取
  20. MySQL学习_数据库和表的基本操作

热门文章

  1. php composer 缓慢,php – 下载Laravel时,Composer非常慢
  2. 线性代数可以速成吗_英语真的可以速成吗?
  3. java testng 优化_java+testNG测试框架搭建----jenkins自动化执行
  4. ios textview间距_iOS 设置TextView控件内容行间距
  5. c调用python脚本如何获取结果_使用C++调用Python代码的方法详解
  6. maven-resources-plugin include 通配符
  7. tomcat 配置异常/404页面
  8. 【若依(ruoyi)】swagger 自定义 swagger-ui.html 的路径
  9. 【Get 以太坊技能】遇到错误 issues#14633 runtime: out of memory:cannot allocate 1413480448-byte block (737902592
  10. java set 接口_【Java提高十七】Set接口集合详解