<题目链接>

题目大意:

给你一个字符串,每个字符有权值,问现在删除字符串中的字符使其中没有"hard"的最小代价是多少。

解题分析:

用DP来求解:        转载于 >>>

dp[i][1]:表示字符串s的前i个字符中不含有前缀'h'的最小代价

dp[i][2]:表示字符串s的前i个字符中不含有前缀'ha'的最小代价

dp[i][3]:表示字符串s的前i个字符中不含有前缀'har'的最小代价

dp[i][4]:表示字符串s的前i个字符中不含有前缀'hard'的最小代价

对于状态转移,例如对dp[i][3],如果位置i的字符不是r,那么dp[i][3] = dp[i - 1][3];
否则,要么去掉位置i的字符,则代价为dp[i - 1][3] + a[i],如果不去除该位置字符,那么之前的序列不能含有'ha',则代价为dp[i - 1][2]。

#include <bits/stdc++.h>
using namespace std; #define N int(1e5+7)
typedef long long ll;
ll dp[N][],arr[N];
char s[N];
const ll INF = 1e18;
const char str[]="0hard"; int main(){
int n;scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++)scanf("%d",&arr[i]);
for(int i=;i<=n;i++)dp[i][]=INF;
if(s[]=='h')dp[][]=arr[];
for(int i=;i<=n;i++)
for(int j=;j<=;j++){
if(s[i]!=str[j])dp[i][j]=dp[i-][j];
else dp[i][j]=min(dp[i-][j]+arr[i],dp[i-][j-]); //以j=3为例,dp[i-1][j]为前i-1项不含'har',并且去除第j项的'r'的代价(因为前i-1项可能包含'ha'),dp[i-1][j-1]表示前i-1项连'ha'都不包含
}
printf("%lld\n",dp[n][]);
}

一维的写法:

#include <bits/stdc++.h>
using namespace std; typedef long long ll;
ll dp[];
char s[int(1e5+)];
const char ss[]="0hard";
int main(){
int n;cin>>n;
scanf("%s",s+);
for(int i=;i<=n;i++){
ll now;scanf("%lld",&now);
if(s[i]=='h')dp[]+=now;
for(int j=;j<=;j++)
if(s[i]==ss[j])dp[j]=min(dp[j]+now,dp[j-]);
}
printf("%lld\n",dp[]);
}

2019-02-17

Codeforces 1096D Easy Problem 【DP】的更多相关文章

  1. Codeforces 1096D - Easy Problem - [DP]

    题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...

  2. poj2826 An Easy Problem?!【计算几何】

    含[三点坐标计算面积].[判断两线段是否有交点].[求线段交点]模板   An Easy Problem?! Time Limit: 1000MS   Memory Limit: 65536K Tot ...

  3. Codeforces 1027E Inverse Coloring 【DP】

    Codeforces 1027E Inverse Coloring 题目链接 #include<bits/stdc++.h> using namespace std; #define N ...

  4. [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】

    [CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...

  5. HDOJ 1423 Greatest Common Increasing Subsequence 【DP】【最长公共上升子序列】

    HDOJ 1423 Greatest Common Increasing Subsequence [DP][最长公共上升子序列] Time Limit: 2000/1000 MS (Java/Othe ...

  6. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  7. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  8. HDOJ 1159 Common Subsequence【DP】

    HDOJ 1159 Common Subsequence[DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  9. HDOJ_1087_Super Jumping! Jumping! Jumping! 【DP】

    HDOJ_1087_Super Jumping! Jumping! Jumping! [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...

随机推荐

  1. swift 实践- 12 -- UIPickerView

    import UIKit class ViewController: UIViewController , UIPickerViewDelegate,UIPickerViewDataSource{ v ...

  2. Confluence 6 用户目录图例 - 和 Jira 连接到 Crowd

      上面的图:Confluence, JIRA 和其他应用程序连接到 Crowd 作为用户管理. https://www.cwiki.us/display/CONF6EN/User+Managemen ...

  3. 为什么在移动端用rem圆角不圆

    rem是根据网页效果图的尺寸来计算的,当然还要借助媒体查询来完成.例如你的设计稿如果是宽720px的话,那你的文字就要以原始大小除以11.25,就是对应下面媒体查询720px:例如16px的话就要16 ...

  4. linux符号与正则表达式

    特殊符号    >    或者1>   标准输出重定向 先把文件的内容清空  再放入新的内容 >> 或   2>>  追加重定向  把内容放入文件的最后一行 1   ...

  5. 三维拓扑排序好题hdu3231

    /* 三维拓扑排序 将每个长方体分解成六个面,xyz三维进行操作 每一维上的的所有长方体的面都应该服从拓扑关系,即能够完成拓扑排序=如果两个长方体的关系时相交,那么其对应的三对面只要交叉即可 如 a1 ...

  6. php 重要函数归集

    1.json_encode 与 json_decode json_encode 把数组转化成字符串 json_encode(array) json_decode 把目标字符串转成数组json_deco ...

  7. 微信公众号开发调用自带地图 不显示(openLocation)

    1.需要在wx.config中声明需要使用的功能(openLocation) 例如: wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端aler ...

  8. 将labelme 生成的.json文件进行可视化的代码+label.png 对比度处理的matlab代码

    labelme_to_dataset 指令的代码实现: show.py文件 #!E:\Anaconda3\python.exe import argparse import json import o ...

  9. 饮冰三年-人工智能-linux-09 服务

    1:SSH服务(提供远程连接服务) 客户端使用Xshell 链接成功 加快连接速度 关闭防火墙 2:apache 服务(提供网页服务) 2.0 准备环境 关闭防火墙:service iptables ...

  10. Leetcode刷题第20天

    一.找树左下角的值 题目:513. Find Bottom Left Tree Value C++ Soution 1: /** * Definition for a binary tree node ...