动态规划
小吴同学GOGOGO
一只怀揣梦想的阿柴;五角场某高校同学、某大厂打工人;兴趣方向:OLAP基础架构、大数据存储和计算引擎;「计算机小屋」
展开
-
合唱队形-(DP)-最长单增子序列和最长单减子序列变形
题目描述N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK, 则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <=...原创 2020-05-04 20:22:22 · 147 阅读 · 0 评论 -
最大子矩阵(DP)
本题其实可以抽象成一个动态规划的题目,我们要求的这个子矩阵不是正方形的,其实我们可以将矩阵进行压缩,想象成一维的,这样,我们在求解的时候,实际上就是求解最大连续子序列和,所以,我们可以枚举这个最大子矩阵的上界和下界,然后通过压缩,从上界的值一直到下界的值累加在一起,然后形成一个一维数组,最后求解这个一维数组的最大连续子序列和即可。复杂度(n^3),可以承受,代码如下://@author:hai...原创 2020-05-04 18:21:25 · 437 阅读 · 0 评论 -
字符串之间的距离 - 简单二维DP
问题描述:编辑距离(Edit Distance)是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,编辑操作包括增、删、改操作。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g),最短编辑距离为3.样例:kittensitting3思路:和查找最长公共子序列有点类似,利用dp[i][j]表示字符串1的i位置和字...原创 2020-04-29 17:57:39 · 244 阅读 · 0 评论 -
计蒜客1223-踩方格(DP)
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b. 走过的格子立即塌陷无法再走第二次;c. 只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走 nn 步,共有多少种不同的方案。22 种走法只要有一步不一样,即被认为是不同的方案。输入格式允许在方格上行走的步数 n(n \le 20)n(n≤20)。输出格式...原创 2020-04-18 21:49:42 · 468 阅读 · 0 评论 -
计蒜客-2109-乘积最大(dp)
本题的题意就是在一串数字中插入k个乘号,使分隔开的数字之间乘积最大,其实我们可以考虑这样一个关系,f(i,j)表示从0-i之间插入j个乘号所表示最大的值,那么边界就是当j=0时,f(i,j)就等于从0-i之间的值,所以我们可以得到:见代码:#include<iostream>#include<memory.h>using namespace std;int m...原创 2020-04-04 14:19:21 · 275 阅读 · 0 评论 -
计蒜客-2118-过河卒(dp)
本题因为只能从左上走到右下,所以比较能容易想到dp,同时注意初始化的一个点,就是碰到不可走的点的时候,就面就全部不能走了//@author:hairu,wu//@from:ahut#include<iostream>using namespace std;typedef long long ll;int go[][2]={ -2,-1, -2,1, -1,-2...原创 2020-04-04 11:56:07 · 161 阅读 · 0 评论 -
计蒜客-1409-回文字符串(dp)
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入格式第一行给出整数 NN(0<N \le 1000<N≤100)。接下来的 NN 行,每行一个字符串,每个字符串长度不超过 10...原创 2020-04-03 21:51:29 · 710 阅读 · 0 评论 -
计蒜客-2137-守望者的距离(dp)
恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为 17m/s17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在 1s1s 内移动 60m60m,不过每次使用闪烁法术都会消耗魔法值...原创 2020-04-03 18:19:36 · 146 阅读 · 0 评论 -
计蒜客-2141-传球游戏(DP)
上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:nn 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使...原创 2020-04-01 17:05:52 · 280 阅读 · 0 评论 -
计蒜客-2111-数的计算-dp
我们要求找出具有下列性质数的个数(包含输入的自然数 nn):先输入一个自然数 n(n \le 1000)n(n≤1000),然后对此自然数按照如下方法进行处理:不作任何处理;在它的左边加上一个自然数,但该自然数不能超过原数的一半;k加上数后,继续按此规则进行处理,直到不能再加自然数为止。输入格式11 个自然数 n(n \le 1000)n(n≤1000)。输出格式11 个整数,表示...原创 2020-03-30 15:03:28 · 158 阅读 · 0 评论 -
计蒜客-2098-乌龟棋-四维dp
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘是一行 NN 个格子,每个格子上一个分数(非负整数)。棋盘第 11 格是唯一的起点,第 NN 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中 MM 张爬行卡片,分成 44 种不同的类型(MM 张卡片中不一定包含所有 44 种类型的卡片见样例),每种类型的卡片上分别标有 11、22、33、44 四个数字之一,表示使用...原创 2020-03-30 14:23:59 · 382 阅读 · 0 评论 -
计蒜客-1127-字符环-最长连续相同子序列
有两个由字符构成的环。请写一个程序,计算这两个字符环上最长连续公共字符串的长度。例如,字符串"ABCEFAGADEGKABUVKLM"的首尾连在一起,构成一个环;字符串"MADJKLUVKL"的首尾连在一起,构成一个另一个环;"UVKLMA"是这两个环的一个连续公共字符串。输入格式一行,包含两个字符串,分别对应一个字符环。这两个字符串之间用单个空格分开。字符串长度不超过 500500,且不包含...原创 2020-03-24 20:52:44 · 940 阅读 · 2 评论 -
计蒜客-T1768-搬书
本题是一道明显的动态规划的题目,分析:我们知道,假设有一本书,那么肯定搬这一次,就是最优情况,如果有两本书,那么要么搬两次,要么搬一次,所以取中间最优的情况,所以,取dp[i]为要搬I本书所需要的最少体力值,循环从1-n本书,然后j从1->i即可,取最小值,代码如下:/*@author:HaiRu,WU@from:AHUT*/#include<iostream>u...原创 2020-03-19 19:52:11 · 262 阅读 · 0 评论 -
最大连续子序列和
//最大连续子序列和/*@author:HaiRU,WU@from:AHUT*/#include<iostream>using namespace std;int main(){ int n; cin >> n; int a[100010]; for(int i=1;i<=n;i++){ cin >> a[i]; } int...原创 2020-03-19 19:35:46 · 74 阅读 · 0 评论 -
计蒜客-T1551-魔法少女
前些时间虚渊玄的巨献小圆着实火了一把。 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙。 因为魔女之夜是悬浮在半空的,所以她必须要爬楼,而那座废墟一共有 nn 层,而且每层高度不同,这造成小炎爬每层的时间也不同。不过当然,小炎会时间魔法,可以瞬间飞过一层或者两层[即不耗时]。但每次瞬移的时候她都必须要至少往上再爬一层(在这个当儿补充魔力)才能再次使用瞬移。爬每单位高度需要消耗...原创 2020-03-19 16:15:30 · 441 阅读 · 0 评论 -
计蒜客--T1208 -放苹果
小蒜想知道把 MM 个同样的苹果放在 NN 个同样的盘子里,允许有的盘子空着不放,共有多少种不同的分法?(用 KK 表示)55,11,11 和 11,55,11 是同一种分法。输入格式第一行是测试数据的数目 t(0 \le t \le 20)t(0≤t≤20)。以下每行均包含两个整数 MM 和 NN,以空格分开。1 \le M, N \le 101≤M,N≤10。输出格式对输入的每组数据...原创 2020-03-08 17:36:01 · 405 阅读 · 3 评论