动态规划
文章平均质量分 89
首先是状态定义,一定要非常清楚。其次才是状态转移。
坚持做题,对动态规划的理解会是越来越深刻。
zaiyang遇见
我走过山的时候,山不说话;
我路过海的时候,海不说话。
相遇还是不相遇,都是献给岁月的序曲 !
展开
-
HDU-1754 I Hate It(线段树单点更新,维护区间最大值)
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。,将 id 为 3 的学生的成绩改为 6,改完之后的 5 个数为。,将 id 为 2 的学生的成绩改为 9,改完之后的 5 个数为。,询问区间 [1,5] 的最大值,输出的结果为 5。,询问区间 [3,4] 的最大值,输出的结果为 6。,询问区间 [4,5] 的最大值,输出的结果为 5。,询问区间 [1,5] 的最大值,输出的结果为 9。)的学生当中,成绩最高的是多少。原创 2023-10-20 14:17:46 · 85 阅读 · 0 评论 -
HDU-1698 Just a Hook(线段树区间更新)
在 DotA 的游戏中,Pudge 的肉钩实际上是大多数英雄最可怕的东西。对于每次操作,Pudge 可以将编号从 X 到 Y的连续金属杆更改为铜棒、银棒或金棒。定义了一个操作:将从 X 到 Y 编号的棒更改为金属类 Z,其中 Z=1 表示铜类,Z=2 表示银类,Z=3 表示金类。钩子的总值计算为 N 根金属棒的值之和。你会认为原来的钩子是由铜棒制成的。一组样例,10 根金属棒,两次操作。对于每种情况,在一行中打印一个数字,表示操作后钩子的总值。,这是 Pudge 肉钩的棒数,第二行包含整数。原创 2023-10-20 16:22:50 · 126 阅读 · 0 评论 -
51Nod 1042 数字0-9的数量(前导0的数位dp)
题目链接:https://vjudge.net/contest/374535#problem/F给出一段区间a-b,统计这个区间内0-9出现的次数。比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次。Input两个数a,b(1 <= a <= b <= 10^18)Output输出共10行,分别是0-9出现的次数Sample Input10 19Sample Output11111原创 2020-05-21 20:54:39 · 175 阅读 · 0 评论 -
HDU - 4507 吉哥系列故事——恨7不成妻(思维数学+结构体上的数位dp)
题目链接:https://vjudge.net/contest/347034#problem/IProblem Description 单身!依然单身!吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=72 77=711 最终,他发现原来这一切归根到...原创 2020-02-11 18:32:25 · 235 阅读 · 0 评论 -
HUD 3652 B-number(三维数组维护:最高位限制 取模后的余数 是否存在13)
题目链接:https://vjudge.net/contest/396083#problem/DA wqb-number, or B-number for short, is a non-negative integer whose decimal form contains the sub- string “13” and can be divided by 13. For example, 130 and 2613 are wqb-numbers, but 143 and 2639 are not.原创 2020-09-22 09:16:57 · 127 阅读 · 0 评论 -
CodeForces - 55D Beautiful numbers(数位dp+思维+离散化处理)
题目链接:https://vjudge.net/contest/347034#problem/B题目描述Volodya is an odd boy and his taste is strange as well. It seems to him that a positive integer number is beautiful if and only if it is divisible...原创 2020-02-10 20:39:18 · 142 阅读 · 0 评论 -
HDU - 2089 不要62(数位dp)
题目链接:https://vjudge.net/contest/347034#problem/DProblem Description杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例...原创 2020-02-09 21:23:20 · 126 阅读 · 0 评论 -
POJ - 3252 Round Numbers(数位dp+引入前导0的lead标记)
题目链接:https://vjudge.net/contest/347034#problemDescriptionThe cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone’ (also known as ‘Rock, Paper, Scissors’, ...原创 2020-02-11 10:20:38 · 161 阅读 · 0 评论 -
r HDU - 3709 Balanced Numbe(数位dp解析)
题目链接:https://vjudge.net/contest/355127#problem/CProblem DescriptionA balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. More specifically, imagine eac...原创 2020-02-09 11:59:50 · 7120 阅读 · 0 评论 -
HUD 4283 You Are the One(预处理+前缀和推出递推式)
题目链接:https://vjudge.net/contest/396083#problem/FThe TV shows such as You Are the One has been very popular. In order to meet the need of boys who are still single, TJUT hold the show itself. The show is hold in the Small hall, so it attract a lot of boys原创 2020-09-22 16:18:20 · 119 阅读 · 0 评论 -
POJ - 2955 Brackets(区间dp)
题目链接:https://vjudge.net/contest/372515#problem/EWe give the following inductive definition of a “regular brackets” sequence:the empty sequence is a regular brackets sequence,if s is a regular brackets sequence, then (s) and [s] are regular brackets sequ原创 2020-05-11 16:02:34 · 166 阅读 · 0 评论 -
POJ3280 Cheapest Palindrome(区间dp)
我们可以在字符串的任何位置添加或删除字符,产生一个比原始字符串更长或更短的字符串。行:每行包含三个空格分隔的实体:一个输入字母表的字符和两个整数,分别是增加和删除该字符的费用。标签,以便无论奶牛从哪个方向走过,它们的读数都一样。的奶牛无论正着走还是倒着走,读数都是一样的;第1行: 一行有一个整数,是改变给定名称标签的最小成本。标签是电子的,每个字符的插入或删除都有一个成本。标签的内容和插入或删除每个字母的成本,找出改变。标签的最小成本,使其满足约翰的要求。,成本依据添加或删除的字符的不同而不同。原创 2020-03-17 09:09:10 · 178 阅读 · 0 评论 -
POJ - 1651 Multiplication Puzzle(区间dp)
题目描述:https://vjudge.net/contest/374535#problem/EThe multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and scores the number of points equal to the product o原创 2020-05-21 22:29:24 · 188 阅读 · 0 评论 -
[蓝桥杯2015初赛]生命之树(搜索+dp)
题目链接:http://oj.ecustacm.cn/problem.php?id=1262题目描述 在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b}使得这个点列中的每个点都是S里面的...原创 2020-02-20 15:43:09 · 504 阅读 · 0 评论 -
POJ1260 Pearls(动态规划求最小花费)
题目链接:https://cn.vjudge.net/contest/312755#problem/A翻译:有好多类珍珠,购买每一类珍珠的时候,必须多付10颗这类珍珠的价格,可以把珍珠归到一类买(只能把一类归到比它质量好的一类)。给出每一类珍珠购买的数量和单价(珍珠的质量是升序排列的),问最少需要花费多少钱?Sample Input22100 1100 231 101 111...原创 2019-07-22 14:31:08 · 127 阅读 · 0 评论 -
CodeForces-1249E By Elevator or Stairs? (动态规划求最短时间)
到第二层,走楼梯需要7,做电梯需要6,但是有启动时间2,所以从第一层到第二层走楼梯。若到某一层是做电梯上来的,再到高一层若继续做电梯,则不需要考虑启动时间。若到某一层是走楼梯上来的,再到高一层若想坐电梯需要考虑启动时间。您想知道从第一层(底层)到达每一层所需的最短总时间。在一次移动中,您可以通过两种不同的方式从您所在的楼层。dp[i][0]:表示到第i层是走楼梯到达的。dp[i][1]:表示到第i层做电梯到达的。,分别表示大楼的层数和乘坐电梯的时间。层所需的最短总时间。层所需的最短总时间。原创 2019-10-31 19:12:55 · 220 阅读 · 0 评论 -
HDU - 6344 调查问卷(深刻理解题意,巧用二进制+dp)
题目链接:https://vjudge.net/contest/328717#problem/G度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 m 个问题的调查问卷,每个问题只有 ‘A’ 和 ‘B’ 两种选项。将问卷散发出去之后,度度熊收到了 n 份互不相同的问卷,在整理结果的时候,他发现可以只保留其中的一部分问题,使得这 n 份问卷仍然是互不相同的。这里认为两张问...原创 2019-09-30 10:54:12 · 275 阅读 · 0 评论 -
POJ 3311 Hie with the Pie(TSP模型+Floy+城市状态进行压缩+枚举城市)
题目链接:https://vjudge.net/contest/374535#problem/GThe Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfortunately, due to cutbacks, they can afford to hire only one driver to do the deliveries. He will wait for 1 o原创 2020-05-23 10:18:14 · 337 阅读 · 0 评论 -
POJ - 3254 Corn Fields(状态压缩+dp)
题目链接:https://vjudge.net/contest/362639#problem/DFarmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn f...原创 2020-03-23 21:23:51 · 149 阅读 · 0 评论 -
ZOJ - 1107 FatMouse and Cheese(记录结果再利用的“动态规划”---记忆化搜索)
前提:在涉及“状态”,不是单单知道用dp,明白所定义的数组的意义,才是整个思路的核心。感性到理性过程。题目链接:https://cn.vjudge.net/contest/313927#problem/D翻译:从(0,0)点出发,从一个点只能水平或竖直的到另一个点。并且下一个点的数值大于前一个点的数值,...原创 2019-07-25 14:31:36 · 153 阅读 · 0 评论 -
POJ 1976 A Mini Locomotive(找出dp数组所代表的意义是关键)
题目链接:https://vjudge.net/contest/325203#problem/B翻译:三个火车头,能拉的最大车厢数相同。每一个火车头拉的只能是连续的车厢。给定一个数n,表示有n节车厢,接下来是每个车厢的人数。求能拉的最大人数。分析:拉的车厢只能是连续的,面对一个车厢,可拉可不拉。dp[i][j]表示前i节车厢,用j个火车头拉,所能拉的最大人数。对车厢人数用前缀和处理,维护d...原创 2019-09-10 21:30:25 · 125 阅读 · 0 评论 -
UVA 116 Unidirectional TSP(dp来一发)
给一个m行n列(m≤10,n≤100)的整数矩阵,从第一列任何一个位置出发每次往右、右上或右下走一格,最终到达最后一列。要求经过的整数之和最小。整个矩阵是环形的,即第一行的上一行是最后一行,最后一行的下一行是第一行。输出路径上每列的行号。多解时输出字典序最小的...原创 2019-06-16 10:14:04 · 236 阅读 · 0 评论 -
POJ - 1159 Palindrome(最长公共子序列---空间压缩(滚动数组))
题目链接:https://cn.vjudge.net/contest/312755#problem/B题意:给你一个数N,表示字符串的长度,接着一个字符串,找需要拼凑出回文串的最小增加个数。思路:倒着把数组存一遍,找到两个字符串的最长公共子序列(LCS),字符串的长度减去LCS的长度,就是所求结果。LCS解析:s1s2…sn的子序列可以表示为Si1 Si2… Sim(i1<i2<......原创 2019-07-22 11:13:04 · 425 阅读 · 0 评论 -
HDU - 1423 Greatest Common Increasing Subsequence(dp掌握思想是核心---LCS和LIS的组合)
题目链接:https://cn.vjudge.net/contest/313189#problem/J翻译:给你两个数组,求最大上升公共子序列的长度Sample Input151 4 2 5 -124-12 1 2 4Sample Output2dp问题的引导问题无外乎背包,子序列问题。现在把子序列结合,肯定也有背包的变化问题。做dp,知道所开的dp数组的意义是核心。...原创 2019-07-25 19:53:21 · 201 阅读 · 0 评论 -
HDU - 1494 跑跑卡丁车(转化题意,将三个状态转化为两个状态)
题目链接:https://cn.vjudge.net/contest/313189#problem/N跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣。这款游戏的特别之处是你可以通过漂移来获得一种加速卡,用这种加速卡可以在有限的时间里提高你的速度。为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi。加速卡的获得机制是:普通行驶的情况下,每通过1段赛道,可以获得20%的能量(N2O).能量集满后获得一个加速卡(同时能量清0).加速原创 2020-08-18 10:14:13 · 186 阅读 · 0 评论 -
CodeForces - 414B Mashmokh and ACM(dp)
题目链接:https://vjudge.net/problem/CodeForces-414BMashmokh’s boss, Bimokh, didn’t like Mashmokh. So he fired him. Mashmokh decided to go to university and participate in ACM instead of finding a new job. He wants to become a member of Bamokh’s team. In order原创 2020-08-15 15:28:31 · 355 阅读 · 0 评论 -
HDU - 1024 Max Sum Plus Plus(m段最大和+滚动数组优化)
题目链接:https://vjudge.net/contest/347398#problem/E翻译:输入两个数m和n,接下来有n个数。sum(i,j)=a[i]+a[i+1]+…+a[j]的和。求找出m个(i,j)使得 sum(i1, j1) + sum(i2, j2) + sum(i3, j3) + … + sum(im, jm) 最大。分析:w[i][j]: 前 j 个数分为 ...原创 2019-12-10 21:35:40 · 140 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping! (上升子序列的最大和问题)
问题链接:https://vjudge.net/problem/HDU-1087翻译:现在,有一种叫“超级跳高”的象棋游戏。跳!跳!在HDU非常受欢迎。也许你是个好孩子,对这个游戏知之甚少,所以我现在就把它介绍给你。这个游戏可以由两个人或两个人以上玩。它由一个棋盘棋(盘)、一些棋子(棋子),和所有的棋子都是由一个正整数或“开始”或“结束”。玩家从起点开始,最终必须跳到终点。在跳跃的过程中,玩...原创 2019-06-03 15:22:42 · 228 阅读 · 0 评论 -
POJ - 2533 Longest Ordered Subsequence(最长上升子序列问题+二分优化)
题目链接:https://vjudge.net/contest/347032#problem/GLongest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KDescription:A numeric sequence of ai is ordered if a1 < a2 < … < aN. Let ...原创 2019-12-25 19:32:33 · 139 阅读 · 0 评论 -
HDU - 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包的复杂度如何一步步降为n*W)
题目链接:https://vjudge.net/contest/346265#problem/H这是一道有个数限制的背包问题。对于每一种物品至多选一个或者选任意个的问题我们已经可以在**O(nW)**时间内求解。对于此问题,时间复杂度O(nWc)代码:#include<cstdio>#include<cstring>#include<algorithm...原创 2019-12-04 08:14:43 · 96 阅读 · 0 评论 -
HDU - 4508 湫湫系列故事——减肥记I(完全背包+滚动数组)
题目链接:https://vjudge.net/contest/346265#problem/G完全背包的模板题代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=1e2+10;const int M=1e5+10;int ...原创 2019-12-02 21:03:52 · 143 阅读 · 0 评论 -
UVA12563 Jin Ge Jin Qu hao(定义初始状态)
题目链接:https://cn.vjudge.net/contest/321389#problem/ESample Input23 10060 70 803 10030 69 70Sample OutputCase 1: 2 758Case 2: 3 777翻译:KTV里面有n首歌曲你可以选择,每首歌曲的时长都给出了. 对于每首歌曲,你最多只能唱1遍. 现在给你一个时间限...原创 2019-08-21 21:19:24 · 138 阅读 · 0 评论 -
HDU - 2159 FATE(完全背包+限制条件)
题目链接:https://cn.vjudge.net/contest/313189#problem/K翻译:说了那么多,本质还是完全背包加了一个限制条件(最多拿s件)。给你四个数,n,m,k,s,背包的重量为m,k种物品(每种物品有无限件),接下来k行,一行两个数,表示这类物品的价值和重量。问背包所装物品的过程中如果有物品的最大价值如果>=n,输出此时,n与所用背包容量的差值,如果背包...原创 2019-07-25 21:48:37 · 462 阅读 · 0 评论 -
完全背包解析(追根溯源,无惧变形)
参考书献:挑战程序设计第二版有n种重量和价值分别为wi和vi的物品,挑选总重不超过W的商品,求价值的最大值。每种商品可以挑选任意件。n=33 44 52 3W=7dp[i+1][j]:从前i种物品中挑选总重量不超过j时总价值的最大值。(i的下标是从0开始的)int dp[MAX_N+1][MAX_N+1];void solve(){ for(int i=0;i<...原创 2019-07-25 21:01:29 · 231 阅读 · 0 评论 -
01背包解析(追根溯源,无惧变形)
背包问题解析01背包:每件物品只能选一次。例:n个物品,包的总重量为m。每件物品的重量为w[i],价值为v[i].4 52 31 23 42 2最朴素的办法,把每件物品依次放入背包试试int rec(int i,int j)//从第i个物品开始挑选总重小于j的物品{int res;if(i==n)res=0;else if(j<w[i])res=rec(i+...原创 2019-07-24 08:09:32 · 215 阅读 · 0 评论 -
HDU 1203 I NEED A OFFER!(考虑状态的对立面)
帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份 offer 的最大概率。(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。每组数据都对应一个输出,表示Speakless可能得到至少一份offer的最大概率。至少收到一份offer的最大概率 = 1 - 一份都没收到的最小概率。原创 2019-07-23 16:18:09 · 183 阅读 · 0 评论