
dp
文章平均质量分 94
Andy01_
欲戴其冠 必承其重
展开
-
动态规划 LCS + 完全背包
1. 问题动态规划中关于最长公共子序列 LCSLCSLCS 、完全背包的问题2. 解析动态规划问题,一般都会涉及到状态的转移,最佳的状态值必然是由前一个最佳状态值递推而来,所以可以我们直接将问题抽象为一个整体,考虑当前最佳状态值是由什么状态转移而来。最长公共子序列 LCSLCSLCS 问题 :这里要区分子序列 subsequencesubsequencesubsequence 和子串 substringsubstringsubstring 的区别, 前者是可以不连续的,后者必须是连原创 2021-05-17 19:24:20 · 136 阅读 · 0 评论 -
Codeforces Round #666 (Div. 2)E Monster Invaders
题意:有两种不同类型的怪物和三种不同类型的枪,一个拥有1点生命的普通怪物。一个拥有2点生命的老板。这三种枪是:手枪,对一个怪物造成1点生命伤害,时间r1激光枪,对当前等级的所有怪物(包括老板)造成1点伤害,时间r2AWP,立即杀死任何怪物,时间r3这些枪最初是不装子弹的,Ziota一次只能装1把枪。如果Ziota伤害了boss但没有立即杀死它,他将被迫从当前关卡移动到任意相邻关卡i−1或者i+1,Ziota也可以随时选择移动到相邻的楼层。相邻层之间的每一次移动都由传送门管理,传送时间为d。原创 2020-08-31 17:52:19 · 2258 阅读 · 12 评论 -
POJ2686 Traveling by Stagecoach(dp+TSP)
题目很长就不直接粘贴复制过来了题意:给你n张车票,m个城市,p条边(由x城市到y城市的z长度),a是起点,b是终点。你每走一条路就会花掉一张车票,而这条路上的时间花费为路长/票的价值。如果能由起点a到达终点b就输出最小的时间花费,否则输出Impossible。题解:由于n的数据范围很小,最大为8,很明显就可以把每张票的状态作为状压的入手点。1表示用过这张票,0表示没有。那么我们就可以直接暴力枚举总的状态(1<<n) ,枚举每张车票,枚举每个顶点和起点。然后用下面这个状态转移方程代原创 2020-07-27 19:47:15 · 160 阅读 · 0 评论 -
HDU1074 Doing Homework(状态压缩 + 输出最合理的取法)
Problem DescriptionIgnatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after the deadline, the teacher will reduce原创 2020-07-24 12:37:20 · 227 阅读 · 0 评论 -
滚动数组(简单说明)
前提概要首先呢,滚动数组是一种能够在动态规划中降低空间复杂度的方法,有时某些二维dp方程可以直接降阶到一维,在某些题目中甚至可以降低时间复杂度,是一种极为巧妙的思想,简要来说就是通过观察dp方程来判断需要使用哪些数据,可以抛弃哪些数据,一旦找到关系,就可以用新的数据不断覆盖旧的数据量来减少空间的使用,接下来我会介绍一些有关滚动数组的一些题目。以斐波那契数列为例我们先以斐波那契数列来简单感受一下滚动数组的魅力,先上一段经典的代码(使用滚动数组)#include<bits/stdc++.h>原创 2020-07-18 23:37:32 · 15400 阅读 · 6 评论 -
HDU1024 Max Sum Plus Plus(最大字段和)
Problem DescriptionNow I think you have got an AC in Ignatius.L’s “Max Sum” problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.Given a consecutive number sequence S1, S2原创 2020-07-14 11:15:36 · 240 阅读 · 0 评论