动态规划
动态规划
做一只大熊猫
让优秀成为一种习惯!
展开
-
AcWing 487. 金明的预算方案(dp+dp 预处理)
代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.原创 2021-11-24 21:11:50 · 245 阅读 · 0 评论 -
AcWing 272. 最长公共上升子序列(dp 求最想公共子序列)
思路这题是在求最长公共子序列的基础上求要求递增。我们可以简单的三层 for 循环进行枚举 ,但是我们的第三层 for 循环是在第二层 for 循环的时候用一个 mx 变量进行,不断维护的。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define .原创 2021-11-24 20:56:07 · 151 阅读 · 0 评论 -
AcWing 275. 传纸条(高维 dp)
思路高维 dp,开四维(i,j,k,l)表示两个人的位置,进行暴力状态转移。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#de.原创 2021-11-24 20:40:27 · 155 阅读 · 0 评论 -
AcWing 1027. 方格取数(高维 dp)
思路高维 dp,开四维,去暴力状态转移。代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f.原创 2021-11-24 20:35:31 · 257 阅读 · 0 评论 -
Sequence Gym - 103104I (dp + 单调栈优化)
题意现在有一个长度为 n 的数组 p,数组元素的取值为 1~n,给我们 m 个限制条件 <x, y> ,每个限制为 p [x] != y. 现在让我求出四元组的 <A,B,L,R> 的数量,四元组的意思是在 p 数组中 [A,B] 子区间的任意数字可以取值为 [L, R] 中的任意一个数字。(A、B、L、R 可以均 <= n)。思路设状态转移数组:f [i][j] 表示以 i 位置为结尾的所有子区间中,以 j 数字结尾所能产生的答案的贡献数量。可以用单调栈去维原创 2021-10-07 10:13:06 · 199 阅读 · 0 评论 -
Shooting Bricks HDU - 7110(动态规划)
题意给我们一个 n*m 的矩阵,每个矩阵格子上有一个砖块????,每个格子有两个属性:(分数,是否获得子弹),也就是说如果我们用子弹把这个砖块给打掉的话,会获得这个相应格子上的分数,并且这个格子如果奖励子弹的话,我们又会获得一发子弹,这样的话相当于没有消耗子弹。刚开始矩阵第 n 层暴露在外面,我们只能打暴露的砖块,如果我们打了某一列的暴露的砖块,那么这个砖块的上面(那一层的)那个砖块就变的暴露了,现在我们有 k 发子弹,问我们能获得的最大分数是多少?思路首先这题不能用分组背包!!!这原创 2021-09-05 10:07:55 · 146 阅读 · 0 评论 -
O - Mondriaan‘s Dream POJ - 2411(dfs + 状态压缩)
题意现在要用个 1x2 的小方格,去填满 h * w 的大方格,求填满方格的方案数思路以每一列的格子中 0、1 分别表示未被小方格覆盖、被小方格覆盖,对每一列的格子被覆盖的状态进行状态压缩,用 dfs 枚举当前列的状态,并同时求出要转移的下一列的状态,进行状态转移就行了代码#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algo原创 2021-05-16 22:30:07 · 128 阅读 · 0 评论 -
K - Oh My Holy FFF HDU - 4719(线段树 + dp)
题意有 n 个人从左到右的排队,对应的身高的为 Hi, 先在你可以将这个队伍分成若干个连续 group, 且每个 group 中的人数不能超过 L,要求从第二组开始每组的最后一个人的高度比前一组的最后一个人的高度高,第 i 组最后一个人的高度为 bi,那么分组总分数和为:求一个合理的分组方案,让分组分数最大。思路这题我们假设 dp [i] 表示前 i 个人分组的最大得分,我们对每个 i 位置多考虑 dp [i] , 当我们一直考虑到 dp [n] 的时候就得到的答案了,当 n 的数据范围较小原创 2021-05-16 22:14:43 · 110 阅读 · 1 评论 -
D 成 救 翻 写 不 一 快 乐
题目链接思路首先题目只有四种卡片,总共有 m 张,且卡片数字和为 n,让我们求出一种最佳的组合方式,使能获得的价值最大。由于数据比较小,且无法应用贪心去做这一题,于是去想是 dp 问题明显 m 张卡片的使用顺序决定了答案的优劣,让我在选择卡片的时候,无法确定当前应该使用哪种卡片,当前使用的卡片的种类会影响后面的卡片的使用,既然在当前无法确定应该从哪种卡片开始使用?那么这个时候我们就暴力的枚举用哪一种卡片,用了这个中卡片之后会 递归或转移 到那个状态,与就有了 dp [a][b][c][d](.原创 2021-05-12 10:12:00 · 78 阅读 · 0 评论 -
I - Phalanx HDU - 2859(DP-最大对称子图)
思路 题意给我们一个n*n的矩阵,让我们找出一个最大的 子矩阵, 这个子矩阵要求要沿从左下->到右上的对角线对称 分析这题用dp来求,dp[i][j] 表示以(i,j)为左下角的子矩阵的最大对称矩阵的尺寸大小,如上图所示样例,当我们考虑以(2,1)为左下角的子矩阵的 最大对称尺寸(即dp[2][1]的值 )的时候,我们可以从(2,1)这个点开始,分别沿着竖直方向向上、水平方向向右 进行对称位置的数进行匹配,设匹配的数字量为:size,如果size 大于(2,1)位置右上角面原创 2020-07-23 10:57:22 · 171 阅读 · 0 评论 -
FZU - 2204 简单环形dp
FZU - 2204 简单环形dp题目链接n个有标号的球围成一个圈。每个球有两种颜色可以选择黑或白染色。问有多少种方案使得没有出现连续白球7个或连续黑球7个。输入第一行有多组数据。第一行T表示组数。(T <= 20)每组包含n,表示球的个数。(1 <= n <= 100000)输出每组先输出 "Case #x: " (其中x为当前组数) 该行接下来输出方案数。方案...原创 2020-04-04 10:34:32 · 155 阅读 · 0 评论 -
1~n的之间的k个数组成和为n的方案数(动态规划)
绯色的子弹 Description 众所周知,夏季奥林匹克运动会时隔56年第二次在东京举办,紧接着出来的《名侦探柯南 M24绯色的子弹》竟也是有奥运会的背景,最重要的是重归主线!!!(赤井秀一好帅)讲个笑话:太让我失望了,这次剧场版居然不是讲赤井秀一参加奥运射击项目吊打各路高手包揽所有金牌的,千载难逢的机会啊阿笠博士带着包括柯南在内的少年侦探团在奥运会现场,大家都知道,阿笠博士有个猜谜语的...原创 2020-03-28 11:12:40 · 1301 阅读 · 0 评论 -
P1130 红牌(动态规划)
P1130 红牌思路如下这一题很像数字金字塔,我们可以正着求最小时间,当然也可以逆着求最小时间,如果正着求:那么我们怎么求状态转移方程呢?,在这里我们假定状态转移方程为:dp[ i ][ j ] ,i 表示第i行,j表示第j列,dp[ i ][ j ] 则表示从开始点(第一个步)到(i , j)这个位置所需要的最小的时间。当j > 1 && i > 1 的时候...原创 2020-01-21 23:17:56 · 554 阅读 · 0 评论 -
P1044 栈(递归、递推、卡特兰、打表)
P1044 栈题目背景栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。题目描述宁宁考虑的是这样一个问题:一个操作数序列...原创 2020-01-20 18:32:03 · 2064 阅读 · 3 评论 -
P1006 传纸条(二维、三维dp)
P1006 传纸条输入输出样例输入 #1 复制3 30 3 92 8 55 7 0输出 #1 复制34说明/提示【限制】对于 30% 的数据,1≤m,n≤10; 对于 100% 的数据满1≤m,n≤50NOIP 2008提高组第三题思路如下这一题应该是可以看成由两种解法,但是也可以看成一种解法,题解三四可以看成是题解一 ,优化掉一维的结果。题解传送门题解一(四维...原创 2020-01-16 14:03:17 · 233 阅读 · 0 评论 -
P1004 方格取数(四维dp)
P1004 方格取数思路如下这题是看洛谷大佬的思路才写出来的,所以我会把大佬的思路展示如下:1⃣️:我们可以找到一个叫思维dp的东西,dp[i][j][k][l],其中前两维表示一个人从原点出发到(i,j)的路线,而后两维表示:另外一个人从原点出发到(k, l)的路线,通过这个四维的数组,我们就可以暴力的模拟出每个所走的路线。2⃣️:其次我们思考????:第一个人到达(i, j)点一定是从(I...原创 2020-01-15 16:40:13 · 1875 阅读 · 1 评论 -
P1002 过河卒
P1002 过河卒棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0)B点(n,m)m为不超过20的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走...原创 2020-01-15 14:47:07 · 234 阅读 · 0 评论 -
D - Super Jumping! Jumping! Jumping!
Nowadays, a kind of chess game called “Super Jumping! Jumping!Jumping!” is very popular in HDU. Maybe you are a good boy, and knowlittle about this game, so I introduce it to you now.The game can ...原创 2020-01-07 18:53:20 · 366 阅读 · 2 评论 -
C - Monkey and Banana
文章目录题意如下思路如下题解如下:A group of researchers are designing an experiment to test the IQ of amonkey. They will hang a banana at the roof of a building, and at themean time, provide the monkey with some ...原创 2020-01-07 16:30:25 · 373 阅读 · 0 评论