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[100010]; char s[100010]; long long dp[100010][4];int main() {scanf("%d",&n);scanf("%s",s+1);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=n;i>=1;i--){dp[i][0]=dp[i+1][0];dp[i][1]=dp[i+1][1];dp[i][2]=dp[i+1][2];dp[i][3]=dp[i+1][3];if(s[i]=='d'){dp[i][0]=dp[i+1][0]+a[i];dp[i][1]=min(dp[i+1][0],dp[i+1][1]);} if(s[i]=='r'){dp[i][1]=dp[i+1][1]+a[i];dp[i][2]=min(dp[i+1][1],dp[i+1][2]);}if(s[i]=='a'){dp[i][2]=dp[i+1][2]+a[i];dp[i][3]=min(dp[i+1][2],dp[i+1][3]);}if(s[i]=='h'){dp[i][3]=dp[i+1][3]+a[i];}}long long ans=0;ans=min(min(dp[1][0],dp[1][1]),min(dp[1][2],dp[1][3]));printf("%lld\n",ans); } #include<bits/stdc++.h> using namespace std;int n,a[100010]; char s[100010]; long long dp[100010][4];int main() {scanf("%d",&n);scanf("%s",s+1);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=n;i>=1;i--){dp[i][0]=dp[i+1][0];dp[i][1]=dp[i+1][1];dp[i][2]=dp[i+1][2];dp[i][3]=dp[i+1][3];if(s[i]=='d'){dp[i][0]=dp[i+1][0]+a[i];dp[i][1]=min(dp[i+1][0],dp[i+1][1]);} if(s[i]=='r'){dp[i][1]=dp[i+1][1]+a[i];dp[i][2]=min(dp[i+1][1],dp[i+1][2]);}if(s[i]=='a'){dp[i][2]=dp[i+1][2]+a[i];dp[i][3]=min(dp[i+1][2],dp[i+1][3]);}if(s[i]=='h'){dp[i][3]=dp[i+1][3]+a[i];}}long long ans=0;ans=min(min(dp[1][0],dp[1][1]),min(dp[1][2],dp[1][3]));printf("%lld\n",ans); }
转载于:https://www.cnblogs.com/stxy-ferryman/p/10344294.html
CF1096D Easy Problem(DP)相关推荐
- POJ 2826 An Easy Problem?! 叉积求多边形面积 【计算几何】
ACM博客_kuangbin POJ 2826 An Easy Problem?! An Easy Problem?! Time Limit: 1000MS Memory Limit: 65536 ...
- 2019年ICPC银川区域赛 Easy Problem(简单莫比乌斯函数 + 欧拉降幂)
Easy Problem ∑a1=1m∑a2=1m∑a3=1m⋯∑an−1m∑anm[gcd(a1,a2,a3,-,an−1,an)==d](a1,a2,a3,-,an−1,an)k=dkd∑a1=1 ...
- 数论六之计算几何——An Easy Problem,Ancient Berland Circus,Open-air shopping malls
可检验模板正确度 An Easy Problem?! Ancient Berland Circus Open-air shopping malls An Easy Problem?! problem ...
- 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem
[题目链接] ybt 1223:An Easy Problem OpenJudge NOI 4.6 1455:An Easy Problem [题目考点] 1. 数制 2. 枚举 [解题思路] 解法1 ...
- 信息学奥赛一本通(1223:An Easy Problem)
1223:An Easy Problem 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 5835 通过数: 4111 [题目描述] 给定一个正整数N,求最 ...
- C1. Pokémon Army (easy version)(DP)
C1. Pokémon Army (easy version)(DP) 思路:dpdpdp. 考虑:分数组长度的奇偶性进行dpdpdp. 令dp[i][0]dp[i][0]dp[i][0]表示前iii ...
- D. Easy Problem(简单DP)
题目链接:http://codeforces.com/contest/1096/problem/D 题目大意:给你一个字符串,然后再给你去掉每个字符串的每个字符的花费,然后问你使得字符中不再存在har ...
- CodeForces - 1096D Easy Problem(线性dp)
题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...
- 【CodeForces - 1096D】Easy Problem(dp,思维)
题目大意: 现在有一个由小写字母组成的字符串,去掉这个字符串的第i个位置的字符会有ai的代价.你的任务是去掉这个字符串中的一些字符使得该字符串中不包含子序列hard,且去掉字符的代价之和尽可能小. 输 ...
最新文章
- R语言使用colnames函数改变dataframe列名称实战
- vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
- Spring进行表单验证
- statspack系列8
- OpenGL Gamma Correction伽马校正的实例
- spring的applicationContext.xml如何自动加载
- Android JNI使用方法
- ceisum 加载geojson,webgl 加载geojson数据没有贴地
- .NET的可调信号量
- Tomcat logs 目录下各日志文件的含义
- html语言标记说明,HTML中注释标签的使用方法
- 一起学libcef--一个应用libcef的简单例子(windows程序)
- 金融学习之八——ARCH和GARCH模型应用
- VM 安装win10 失败
- TruckSim 建立牵引车模型(一)
- 是谁拿走了哈萨克斯坦的油气收益?
- SpringBoot电商项目前后端界面搭建
- 11、每日最新新闻接口,免费好用
- 4、RDA8910(4GCAT1)CSDK二次开发:期待已久的ADC采集
- linux vi或者vim编辑器中如何显示行号
热门文章
- VMware 安装kali——linux
- 【Pytorch神经网络实战案例】24 基于迁移学习识别多种鸟类(CUB-200数据集)
- 聚类(Clustering): K-means算法
- python或anaconda下安装opencv提示Error:No matching distribution found for opencv
- 十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合
- Linux Shell快速入门
- 程序员面试金典 - 面试题 02.01. 移除重复节点(哈希set)
- LeetCode 482. 密钥格式化
- LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)
- linux防火墙 33001端口,Linux操作系统下IPTables配置方法详解