自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心

方得始终

  • 博客(15)
  • 收藏
  • 关注

原创 HDU 2829 Lawrence(四边形不等式优化DP)

题目链接:点击打开链接题意:铁路上有n个站点,每个站可以往其他站运送粮草,现在要炸掉m段铁路(两个站点之间为一段)使得粮草补给之和最小,每个站的粮草补给为 该站点的值 和 能与之连通的站点的值 的积 之和思路:动态规划问题,用dp[i][j]表示前j个站点炸掉i段得到的最小值。状态转移方程与前篇POJ 1160 Post Office问题类似:dp[i][j] = min(dp[i -

2017-09-26 08:57:30 653

原创 POJ 1160 Post Office(经典DP)

题目链接:点击打开链接题意:一条高速公路,有N个村庄,每个村庄均有一个唯一的坐标,选择P个村庄建邮局,问怎么选择,才能使每个村庄到其最近邮局的距离和最小?最后打印这个最小值。思路:典型的DP问题。当我们在v个村庄中只建一个邮局,可以推导出,只有邮局位于中间位置,距离和才最小;有一个特殊情况是,当村庄数为偶数,中间位置有两个村庄,经过计算,两个村庄的距离和相等,所以俩位置均可。可以联

2017-09-25 17:55:10 3016 1

原创 单调队列优化多重背包

我们知道能用单调队列优化的DP问题需要满足:dp[i] = max / min (f[k])+ g[i]  (k 多重背包问题多用二进制优化,优化后的复杂度为O(NVΣlogni)。多重背包问题的状态转移也能转化成此状态转移方程,从而利用单调队列优化,优化后的复杂度为O(NV)。具体思路:对于第i件物品:已知体积为we,价值为val,数量为num,可以按照we的余数,将

2017-09-21 16:58:46 951

原创 HDU 3401 Trade(用单调队列优化DP)

题目链接:点击打开链接题意:给出T天内,每天的股票买卖价格和每天的股票买卖最大数量,而且每天最多只能拥有maxP数量的股票,开始时有无限本金,任意两次交易需要间隔W天及以上,也就是第i天交易,第i+w+1天及以后才能再交易。问最多能赚多少钱?思路:很明显的DP问题,用dp[i][j]表示第i天拥有j数量股票时的最多赚钱数。容易得到状态转移方程:(1)当天不买不卖:dp[i][j

2017-09-19 19:43:31 474

原创 单调栈

单调栈和单调队列一样,都是维护一个单调序列。单调栈性质:(1)后进先出(2)只在栈顶进行入栈、出栈操作(3)单调性指的是从栈顶元素到栈底元素符合严格的单调递增或者单调递减。具体进栈过程的本质是:维护单调性。以单调递减栈为例,若当前进栈元素为u,从栈顶开始遍历,大于等于u的元素出栈,直到栈顶元素小于u或者栈为空,然后u入栈。例子:进栈元素分别为

2017-09-19 10:21:44 565

原创 POJ 2559 Largest Rectangle in a Histogram(单调栈)

题目链接:点击打开链接题意:从左到右排列有多个矩形,这些矩形的宽度都为1,长度不等。选择连续的一至多个矩形,使得到的面积最大,但不能超出原有矩形的范围。思路:单调栈入门题目,维护一个由栈顶到栈底单调递减(指矩阵高度)的矩阵序列。新矩阵入栈时,若高度大于栈顶矩阵的高度,直接入栈;否则,先更新栈内矩阵,再入栈,具体更新过程为:先取栈顶元素,然后每次从栈顶取一个矩阵,与之前的矩阵进行合并,更新合

2017-09-19 09:37:53 505

原创 CodeForces 253D Table with Letters - 2(枚举技巧)

题目链接:点击打开链接题意,给出一个字符表,问有多少子表满足:四个角字符相同,子表内a字符的数量不超过k。思路:不加入任何技巧的话,上行、下行、左列、右列四重枚举,O(n^4),复杂度太高,可以加入一点枚举技巧,减少一层枚举。首先要利用前缀和预处理,a[i][j]表示第i行,1 ~ j列字符a的数量。技巧的话,有点形似尺取法,但有区别,尺取法是每次移动一个坐标的le,然后尽可能右移

2017-09-17 14:56:30 448

原创 单调队列

单调队列指的是队列中的所有元素是单调递增或者单调递减的。它可以在队首或队尾删除元素,只能在队尾插入元素,维护队列的均摊时间复杂度为O(1)。单调队列一般用于解决的问题如,用一个长度为k的框在所给序列上移动,求框里面所包含的元素的最大值。以单调递减队列为例:队尾插入元素:为了保证队列的递减性,在插入元素num的时候,要将队尾元素和num比较,如果队尾元素不大于num,则删除队尾元

2017-09-16 14:25:07 424

原创 POJ 2823 Sliding Window(单调队列)

题目链接:思路:单调队列入门题目

2017-09-16 13:54:32 420

原创 HDU 2844 Coins(多重背包)

题目链接:点击打开链接题意:给出一些种类的硬币,每类硬币均有一定面值和数量,问用这些硬币能组成位于[1,m]范围内的多少种面值?思路:背包中的可达性问题,按照经验,如果只求最值,dp数组为常规的即可,初始化为全0;如果既求最值又判断可达性,dp数组最好初始化为-1作为不可达的判断,且dp[0]初始化为0;此题只判断可达性,其实连dp数组都用不到,直接开数组标记判断结果即可。网上不少人采

2017-09-10 21:54:07 343

原创 多重背包

多重背包:有N种物品和一个体积为V的背包。第i种物品最多有n[i]件可用,每件体积是w[i],价值是v[i]。将哪些物品装入背包可使这些物品的体积总和不超过背包体积,且价值总和最大?动态规划:dp[i][j]表示前i种物品放入体积为j的背包中的最大价值。状态转移方程:dp[i][j] = max{ f[i-1][j - k*w[i]] + k*v[i]},0 完全按照此

2017-09-10 15:52:42 1086 1

原创 HDU 2159 FATE(二维完全背包)

题目链接:点击打开链接思路:二维完全背包。虽然每个怪兽的数量没有限制,但怪兽总数量有限制,所以除了忍耐度,还要加一维怪兽数量。题目要求剩余忍耐度尽可能的大,所以这里把枚举忍耐度放到第一层循环,当忍耐度枚举到一个下限能达到所需经验值,停止枚举。// HDU 2159 FATE.cpp 运行/限制:0ms/1000ms#include #include #include #incl

2017-09-09 15:22:36 347

原创 完全背包

完全背包:在N种物品中选取若干件(同一种物品可多次选取),放在体积为V的背包里,每种物品的体积为w1,w2......wn,与之相对应的价值为v1,v2......vn,求解怎么装物品可使背包里物品总价值最大?动态规划:dp[i][j]表示前i种物品中选取若干件物品放入体积为j的背包中所能得到的最大价值。状态转移方程:dp[i][j] = max(dp[ i - 1 ][ j

2017-09-09 12:58:40 382

原创 POJ 3252 Round Numbers(数位DP)

题目链接:点击打开链接题意:求一个区间内满足化为二进制后0多于1的数的数量。思路:很明显的数位DP,dp[pos][num]表示当前数位及以后,0减去1的数量为num的方案数。需要注意的是0的数量可能小于1的数量,所以会出现负数,因此要对数进行哈希,int为32位,那么num的取值为[-32,32],可以把0映射为32,即[-32,32]映射到[0,64]。这题还要注意前导0,前导0是不能

2017-09-02 17:22:50 336

原创 CodeForces 149D Coloring Brackets(区间DP)

题目链接:点击打开链接题意:给出一个括号序列,该序列保证是合法的,即每个括号都能找到唯一的一个匹配括号。给出下列三个染色规则,问有多少种染色情况?1.每个括号要么不涂色,要么涂红色或者蓝色。2.每一对匹配括号,必须有一个且仅有一个被涂色。3.两个相邻的括号不能有相同的颜色。(若两者均未涂色也可以)思路:之前做过最大匹配括号数目的题目,是区间DP问题,此题也可以采用区间DP来做,

2017-09-01 16:13:05 449

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除