传送门

•题意

给出一个长度为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])$

•代码

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+;
char s[maxn];
ll dp[];
int main()
{
int n;
cin>>n;
scanf("%s",s+);
for(int i=;i<=n;i++)
{
ll x;
cin>>x;
if(s[i]=='h')
dp[]+=x;
else if(s[i]=='a')
dp[]=min(dp[]+x,dp[]);
else if(s[i]=='r')
dp[]=min(dp[]+x,dp[]);
else if(s[i]=='d')
dp[]=min(dp[]+x,dp[]);
}
cout<<dp[]<<endl;
}

CodeForces 1096D(线性dp)的更多相关文章

  1. Codeforces 176B (线性DP+字符串)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...

  2. CodeForces - 1051D (线性DP)

    题目:https://codeforces.com/problemset/problem/1051/D 题意:一个2行n列的矩形,上面有黑白块,然后问你怎么布置才能有k个连通块,问有多少种方案数 思路 ...

  3. CodeForces - 1038D (线性DP)

    题目:https://codeforces.com/problemset/problem/1038/D 题意:给你n个数字,每个数字可以吃左右两边的数,然后吃完后自己变成 a[i]-a[i+1]或者a ...

  4. [CodeForces - 1272D] Remove One Element 【线性dp】

    [CodeForces - 1272D] Remove One Element [线性dp] 标签:题解 codeforces题解 dp 线性dp 题目描述 Time limit 2000 ms Me ...

  5. [线性DP][codeforces-1110D.Jongmah]一道花里胡哨的DP题

    题目来源: Codeforces - 1110D 题意:你有n张牌(1,2,3,...,m)你要尽可能多的打出[x,x+1,x+2] 或者[x,x,x]的牌型,问最多能打出多少种牌 思路: 1.三组[ ...

  6. LightOJ1044 Palindrome Partitioning(区间DP+线性DP)

    问题问的是最少可以把一个字符串分成几段,使每段都是回文串. 一开始想直接区间DP,dp[i][j]表示子串[i,j]的答案,不过字符串长度1000,100W个状态,一个状态从多个状态转移来的,转移的时 ...

  7. hdu1712 线性dp

    //Accepted 400 KB 109 ms //dp线性 //dp[i][j]=max(dp[i-1][k]+a[i][j-k]) //在前i门课上花j天得到的最大分数,等于max(在前i-1门 ...

  8. 动态规划——线性dp

    我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp.在这篇文章中,我们将讨论有关线性dp的一些问题. 在有关线性dp问题中,有着几个比较经典而基础的模 ...

  9. POJ 2479-Maximum sum(线性dp)

    Maximum sum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33918   Accepted: 10504 Des ...

  10. poj 1050 To the Max(线性dp)

    题目链接:http://poj.org/problem?id=1050 思路分析: 该题目为经典的最大子矩阵和问题,属于线性dp问题:最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而 ...

随机推荐

  1. python 初始化init方法

  2. Web富媒体应用

    曾几何时,大家都在以flash开发的富媒体交互应用而感叹,一是叹它的丰富多彩的效果,一是叹它的局限.性能以及加载时长等问题. 如今,市场以及基本上没有flash什么事情了,而是H5的天下,可惜,移动应 ...

  3. 瑞星推国内唯一Linux系统杀毒软件 国产操作系统还需国产安全软件保护

    近来在IT领域最爆炸的新闻莫过于5月20日中央国家机关政府採购中心下发通知.要求中央机关採购所有计算机类产品不同意安装Windows 8.而改用国产Linux操作系统. 此消息一出,立马引起各界关注. ...

  4. 2019-1-9-WPF-最小的代码使用-DynamicRenderer-书写

    title author date CreateTime categories WPF 最小的代码使用 DynamicRenderer 书写 lindexi 2019-1-9 14:7:26 +080 ...

  5. header发送Cookie

    Cookie传达给客户端的原理 平时执行setcookie('key1', 'value1');这样的代码时,浏览器就会收到cookie并保存,但我们并不能从echo出去的内容中看到cookie内容 ...

  6. 【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的差别和联系

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/weasleyqi/article/details/33396809 1.首先先了解下NSNumber ...

  7. Unity3D游戏开发之在Unity3D中视频播放功能的实现

    版权声明:欢迎订阅公众号[5厘米的理想],愿生命里的每个小理想,都能成为生命里的小确幸.本文地址为: https://blog.csdn.net/qinyuanpei/article/details/ ...

  8. mysql 中 DATE_ADD(date,INTERVAL expr type)

    在Hiredmyway中: SELECT if(LENGTH(company_name) > 30,                   concat(SUBSTRING(company_nam ...

  9. 薪资管理系统(Java面向对象思想)

    package com.test3; import java.util.*; import java.io.*; /** * @author qingfeng * 重要思想:面向对象思想(添加员工管理 ...

  10. H3C路由器Telnet服务配置命令