CF1096D Easy Problem(DP)
题意:给出一个字符串,去掉第i位的花费为a[i],求使字符串中子串不含hard的最小代价。
题解:这题的思路还是比较套路的,
dp[i][kd]两维,kd=0表示不含d的最小花费,1表示不含rd的,2表示不含ard的,3表示不含hard的
那么转移方程就显而易见了,一言概之就是如果前面没有,我这也要没有,就这位一定要去,否则不用去
代码如下:
#include<bits/stdc++.h>
using namespace std; int n,a[];
char s[];
long long dp[][]; int main()
{
scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=n;i>=;i--)
{
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
if(s[i]=='d')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='r')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='a')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='h')
{
dp[i][]=dp[i+][]+a[i];
}
}
long long ans=;
ans=min(min(dp[][],dp[][]),min(dp[][],dp[][]));
printf("%lld\n",ans);
} #include<bits/stdc++.h>
using namespace std; int n,a[];
char s[];
long long dp[][]; int main()
{
scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=n;i>=;i--)
{
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
dp[i][]=dp[i+][];
if(s[i]=='d')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='r')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='a')
{
dp[i][]=dp[i+][]+a[i];
dp[i][]=min(dp[i+][],dp[i+][]);
}
if(s[i]=='h')
{
dp[i][]=dp[i+][]+a[i];
}
}
long long ans=;
ans=min(min(dp[][],dp[][]),min(dp[][],dp[][]));
printf("%lld\n",ans);
}
CF1096D Easy Problem(DP)的更多相关文章
- CF1096D Easy Problem
题目地址:CF1096D Easy Problem 比赛时高二dalaoLRZ提醒我是状压,然而,我还是没AC (汗 其实是一道很基础的线性dp \(f_{i,j}\) 表示序列第 \(i\) 个字符 ...
- D. Easy Problem dp(有衔接关系的dp(类似于分类讨论) )
D. Easy Problem dp(有衔接关系的dp(类似于分类讨论) ) 题意 给出一个串 给出删除每一个字符的代价问使得串里面没有hard的子序列需要付出的最小代价(子序列不连续也行) 思路 要 ...
- CF1096:D. Easy Problem(DP)
Vasya is preparing a contest, and now he has written a statement for an easy problem. The statement ...
- CF1096D Easy Problem(DP)
貌似最近刷了好多的CF题…… 题目链接:CF原网 洛谷 题目大意:有一个长度为 $n$ 的字符串 $s$,删除第 $i$ 个字符需要代价 $a_i$.问使得 $s$ 不含有子序列(不是子串)" ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- HDU 4359——Easy Tree DP?——————【dp+组合计数】
Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- 线段树:CDOJ1591-An easy problem A (RMQ算法和最简单的线段树模板)
An easy problem A Time Limit: 1000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Pr ...
- HDU 4359 Easy Tree DP?
Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- UVA-11991 Easy Problem from Rujia Liu?
Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...
随机推荐
- JSP共享javabean
JavaBean是一种可重复使用,且跨平台的软件组件.JavaBean可分为两种:一种是有用户界面(UI)的javaBean:还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的jav ...
- SVM总结(转)
支持向量机 看了JULY君的博客和文档后,个人对SVM的理解和总结,欢迎交流和指正.其理论部分可以查看下面文档链接,通俗易懂. 支持向量机通俗导论(理解SVM的三层境界) 第一篇:从四个关键词 ...
- triton,docker,mesos
triton user: jill /root/.sdc/docker/jill 下 root@1f6af9d8-8ed9-e940-9c6c-d9505ca25896:~/.sdc/docker/j ...
- docker上传镜像
已经存在镜像 docker tag conductor:ui docker.io/mhcvs2/mhc docker push docker.io/mhcvs2/mhc
- java script btoa与atob的
javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用.当前html5标准正式化之际,Base64将有较大的转型空间,对于H ...
- centos7 opencc 安装
繁体字转换:http://xh.5156edu.com/jtof.php 转换的有问题http://tool.lu/zhconvert/ git网址:https://github.com/BYVoid ...
- DES_3DES_AES_IDES_RSA密码算法比较
对称加密算法(也叫共享密钥) 类型 定义:发送接收使用相同的对称密钥 密钥 长度 分组长度 循环次数 安全性 DES 数据加密标准,速度较快,适用于加密大量数据的场合: 56 64 16 依赖密钥受穷 ...
- frm和ibd恢复sql文件的操作
情况:有mysql中data文件(仅仅一个数据库) 操作:frm和ibd恢复sql文件的操作 1.创建相同名字的库xxx 2.把ibdata1替换成原来的 3.把数据库xxx内内容全部替换为原来的 完 ...
- 如何快速实现一个command
新建一个类,实现icoomand接口 定义一个委托,为测试方便,先不考虑CanExecute的情况. 越简单越好. 代码如下: public class ExitHandler : ICommand ...
- c++ 根据生产日期,保质期求出过期时间
第4关:计算日期 挑战任务 我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计. 例如:A食品在2018年1月1日生产,保质期是20天,则它的过期 ...