【Codeforces 1096D】Easy Problem

【链接】 我是链接,点我呀:)
【题意】


让你将一个字符串删掉一些字符。
使得字符串中不包含子序列"hard"
删掉每个字符的代价已知为ai
让你求出代价最小的方法.

【题解】


设dp[i][j]表示前i个字符,已经和"hard"匹配前j个的最小花费。
对于dp[i][j]
对s[i+1]分类讨论
①s[i+1]不删
那么有两种情况
第一种:s[i+1]和"hard"的第j+1个字符匹配
第二种:..xxxxx不匹配
则分别转移到dp[i+1][j+1]和dp[i+1][j]
②s[i+1]删掉
转移到dp[I+1][j]且用dp[i][j]+a[i+1]尝试转移。

【代码】

import java.io.*;
import java.util.*;public class Main {static InputReader in;static PrintWriter out;public static void main(String[] args) throws IOException{//InputStream ins = new FileInputStream("E:\\rush.txt");InputStream ins = System.in;in = new InputReader(ins);out = new PrintWriter(System.out);//code start from herenew Task().solve(in, out);out.close();}static int N = (int)1e5;static class Task{int n;String s;long a[] = new long[N+10];String goal=new String(" hard");long dp[][] = new long[N+10][10];public void solve(InputReader in,PrintWriter out) {n = in.nextInt();s = in.next();s = " "+s;for (int i = 1;i <=n;i++) a[i] = in.nextLong();for (int i = 0;i <= N;i++) for (int j = 0;j <= 8;j++)dp[i][j] = (long)(1e17);dp[0][0] = 0;for(int i = 0;i < n;i++)for (int j = 0;j <= 3;j++) {//第i+1个不删if (s.charAt(i+1)==goal.charAt(j+1)) {dp[i+1][j+1] = Math.min(dp[i+1][j+1], dp[i][j]);}else {dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j]);}//第i+1个删掉dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j]+a[i+1]);}long ans = dp[n][0];for (int i = 1;i <= 3;i++) {ans = Math.min(ans, dp[n][i]);}out.println(ans);}}static class InputReader{public BufferedReader br;public StringTokenizer tokenizer;public InputReader(InputStream ins) {br = new BufferedReader(new InputStreamReader(ins));tokenizer = null;}public String next(){while (tokenizer==null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(br.readLine());}catch(IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}}
}

转载于:https://www.cnblogs.com/AWCXV/p/10527356.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL之图形流水线中的光照计算、明暗处理

1.1 光照计算发生在图形流水线的Vertex Operations中&#xff0c;只计算每个顶点的颜色&#xff0c;而三角形内部的点的颜色在Fragment Operations阶段通计算&#xff0c;这样效率高&#xff0c;因为像素的数量远远大于顶点的数量。 1.2 计算三角形内每个像素的颜色的过程&am…

教学5层网络体系结构——分层之后数据的发送和接收

协议分层后数据发送过程 发送方层层封装 接收方层层解封装 唯一加尾部的是数据链路层 思考 发送方某层封装完如何知道该交给哪个下层封装&#xff1f; 应用层选择传输层由应用程序决定&#xff0c;传输层选择网络层由固定的搭配&#xff0c;例如因特网只有IP协议&#x…

从视觉系统的原理入手 破解VR眩晕症

来源&#xff1a;EETimes编译&#xff1a;科技行者虚拟现实技术近年来迎来一波快速发展&#xff0c;适用范围也扩展到更多领域&#xff0c;引得众多老牌巨头纷纷参与。然而&#xff0c;VR技术自身仍存在一些极难解决的缺陷&#xff0c;如果无法攻克&#xff0c;技术的进一步普及…

小组会谈(2019.3.14)

一&#xff1a;会议主题 1.确定项目的立题 2.讨论需要实现的功能 3.确定小组成员之间的分工和完成各自任务的期限 二&#xff1a;会议地点 逸夫楼C座一楼 三&#xff1a;会议时间 2018年3月14日10&#xff1a;00--11&#xff1a;20 四&#xff1a;会议内容 1.项目的立题&#x…

TinyXml库的用法之xml文件节点遍历与节点删除

tinyxml是一个C++编写的轻量级xml文件解析库,只需要导入tinyxml.h头文件就可以进行xml文件的操作。 文章目录 前言一、xml文件解析二、xml文件操作总结前言 xml文件在软件设计中被广泛用来进行数据交换,经常需要对xml文件进行操作,本文主要简单介绍对xml文件的节点进行遍历…

应用层相关概念

一、应用层概述 1、应用层协议基本概念 应用层的功能 应用层协议定义了应用程序需交换的报文、所需采取的动作和最终通信数据的应用应用层位于协议栈的最高层次应用层协议提供不同主机之间进程与进程之间的通信用户代理实现应用层协议 套接字 IP端口号&#xff0c;唯一确定…

迎来智能数据分析的新时代

来源&#xff1a;知乎(ID:熊墨淼)最近两星期&#xff08;7月15日&#xff0c;7月22日)&#xff0c;《自然》杂志连续发表两篇DeepMind写的用人工智能的方法预测蛋白质三维结构的文章和NIH Director Francis Collins 写的博客 &#xff02;Artificial Intelligence Accurately P…

2019春季第三周作业

2019年春季学期第三周作业基础作业 本周没上课&#xff0c;但是请大家不要忘记学习。 本周请大家完成上周挑战作业的第一部分&#xff1a;给定一个整数数组(包含正负数)&#xff0c;找到一个具有最大和的子数组&#xff0c;返回其最大的子数组的和。 例如&#xff1a;[1, -2, 3…

DNS域名系统详解

一、分层次的域名结构 顶级域名、 二级域名、 三级域名、 四级域名 二、因特网的域名结构 因特网采用了层次树状结构的命名方法&#xff0c;称为域名&#xff0c;如&#xff1a;www.jxnu.edu.cn 三级域名&#xff1a;如www表示万维网 二级域名&#xff1a;如jxnu表示江西师…

侯世达:让机器学习思考的人

图源&#xff1a;GREG RUFFING来源&#xff1a;利维坦文&#xff1a;James Somers原文&#xff1a;www.theatlantic.com/magazine/archive/2013/11/the-man-who-would-teach-machines-to-think/309529/译文原载&#xff1a;《新知》杂志侯世达&#xff08;Douglas Hofstadter&a…

日记——2019-03-12

感遇&#xff08;其一&#xff09; 张九龄 兰叶春葳蕤&#xff0c;桂华秋皎洁。 欣欣此生意&#xff0c;自尔为佳节。 谁知林栖者&#xff0c;闻风坐相悦。 草木有本心&#xff0c;何求美人折&#xff1f; 我的爱人快乐而且善良&#xff0c;但是不容易&#xff0c;遇见——庞德…

www万维网和HTTP协议

万维网的相关概念 万维网的客户端程序 浏览器&#xff1a;IE、firefox、chrome 万维网的服务器端软件 IIS&#xff0c;Tomcat、Apache 万维网的模式 采用C/S模式 Web页面 由文字、图片、声音、视频等多种对象组成 HTTP协议 Web页面传输方式 如何标志分布在因特网上的…

游戏中应用强化学习技术,目的就是要打败人类玩家?

来源&#xff1a;AI前线作者&#xff1a;凌敏采访嘉宾&#xff1a;黄鸿波2016 年&#xff0c;DeepMind 公司开发的 AlphaGo 4:1 大胜韩国著名棋手李世石&#xff0c;成为第一个战胜围棋世界冠军的人工智能机器人&#xff0c;一时风头无两。AlphaGo 的巨大成功开启了“人工智能元…

HTTP报文的格式

一、HTTP请求报文的格式 两个回车换行表示首部的结尾注意&#xff1a;HTTP协议首部使用ASCII码作为编码方式HTTP请求报文提交表单时会包含数据 二、HTTP响应报文格式

laravel的重定向

Route::get("redirect1", function () { // redirct的三种写法 // return redirect()->route("testRedirect");    //路由命名的使用方式 route("name") laravel内置函数 // return redirect(/redirect2);       //lara…

Transformer走下神坛?南加州大学教授:想解决常识问题,神经网络不是答案

来源&#xff1a;nextgov转自&#xff1a;新智元编辑&#xff1a;LRS如果说人工智能和真正的人脑之间的差距&#xff0c;那最重要的就是机器缺乏生活中的常识。一切貌似合理、理所当然的事物在计算机眼中都是不可理解的。计算机不知道「柠檬是酸的」&#xff0c;「只有成熟的香…

FTP协议、电子邮件系统与Telnet远程控制

一、FTP协议概述 FTP定义 文件传输协议用于因特网文件传输 FTP特性 使用客户端/服务器模式使用TCP提供可靠的传输FTP属于维护状态的协议FTP使用两条TCP连接完成数据传输 FTP的两条连接 数据连接问题 当有具体文件或目录内容传输时&#xff0c;临时建立数据连接主动模式下…

http协议的状态码400,401,403,404,500,502,503,301,302等常见网页错误代码

1xx&#xff08;临时响应&#xff09;表示临时响应并需要请求者继续执行操作的状态码。 100&#xff08;继续&#xff09; 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分&#xff0c;正在等待其余部分。 101&#xff08;切换协议&#xff09; 请求者已…

吴志强院士:CIM与城市未来

▲吴志强&#xff1a;博士&#xff0c;教授&#xff0c;中国工程院院士&#xff0c;德国工程科学院院士&#xff0c;瑞典皇家工程科学院院士&#xff0c;同济大学原副校长&#xff0c;中国城市规划学会副理事长&#xff0c;中国2010年上海世博会园区总规划师&#xff0c;北京城…

传输层协议详解

一、传输层的概念和服务 1、传输层的基本概念 传输层负责端到端之间的数据传输控制传输层依赖于网络层的服务&#xff0c;对应用层提供传输服务 2、传输层的功能 跟踪会话 跟踪源主机和目的主机上应用程序间的每次通信 数据分段 将数据分段&#xff0c;并管理每个分段 …