线性dp
文章平均质量分 67
lao_kai_ybqy
这个作者很懒,什么都没留下…
展开
-
包子凑数(完全背包,凑数)
包子凑数题目链接小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放 Ai 个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有 X 个包子。比如一共有 3 种蒸笼,分别能放 3、4 和 5 个包子。当顾客想买 11 个包子时,大叔就会选 2 笼 3 个的再加 1 笼 5 个的(也可能选出 1 笼 3 个的再加 2 笼 4 个的)。当然有时包子大叔无论如何也凑不原创 2021-03-06 00:36:46 · 2182 阅读 · 0 评论 -
糖果(余数dp问题)
糖果题目链接由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的 N 件产品中任意选择若干件带回家享用。糖果公司的 N 件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是 K 的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢?注意:Dzx只能将糖果公司的产品整件带走。输入格式第一行包含两个整数原创 2021-03-06 00:25:03 · 279 阅读 · 0 评论 -
鸣人的影分身(dp划分问题)
鸣人的影分身题目链接在火影忍者的世界里,令敌人捉摸不透是非常关键的。我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。针对不同的作战情况,鸣人可以选择制造出各种强度的影分身,有的用来佯攻,有的用来发起致命一击。那么问题来了,假设鸣人的查克拉能量为 M,他影分身的个数最多为 N,那么制造影分身时有多少种不同的分配方法?注意:影分身可以分配0点能量。分配方案不考虑顺序,例如:M=7,N=3,那原创 2021-03-06 00:10:39 · 426 阅读 · 1 评论 -
波动数列(数论推导,dp)
波动数列题目链接观察这个数列:1 3 0 2 -1 1 -2 …这个数列中后一项总是比前一项增加2或者减少3,且每一项都为整数。栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加 a 或者减少 b 的整数数列可能有多少种呢?输入格式共一行,包含四个整数 n,s,a,b,含义如前面所述。输出格式共一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以 100000007 的余数。数据范围1≤n≤1000,−109≤s≤109,1≤a,原创 2021-02-24 11:51:11 · 276 阅读 · 0 评论 -
地宫取宝(多维dp)
地宫取宝题目链接X 国王有一个地宫宝库,是 n×m 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。输入格式第一行 3 个整数,n,m,k原创 2021-02-23 22:37:01 · 404 阅读 · 1 评论 -
乌龟棋(动态规划)
乌龟棋题目链接小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。乌龟棋的棋盘只有一行,该行有 N 个格子,每个格子上一个分数(非负整数)。棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中共有 M 张爬行卡片,分成 4 种不同的类型(M 张卡片中不一定包含所有 4 种类型的卡片),每种类型的卡片上分别标有1、2、3、4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的原创 2021-02-19 00:05:23 · 148 阅读 · 0 评论 -
I love you(字符串dp问题)
牛客小白月赛21 I题目链接算法分析子序列是可以穿插着选字符组成这题是字符串模拟,也是dp的思想,能否组成就看前面已经有的字符个数算法实现#include<iostream>#include<cstdio>#include<math.h>#include<cstring>using namespace std;const int mod=20010905;int main(){ int a,b,c,d,e,f,g,h;原创 2021-01-18 22:51:46 · 321 阅读 · 0 评论 -
Common Subsequence(最长公共子序列)
Common Subsequence题目链接A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, …, xm > another sequence Z = < z1, z2, …, zk > is a subsequence of X if there exists a s原创 2020-12-20 11:45:18 · 188 阅读 · 1 评论 -
Bridging signals(LIS二分优化)
Problem Description题目链接‘Oh no, they’ve done it again’, cries the chief designer at the Waferland chip factory. Once more the routing designers have screwed up completely, making the signals on the chip connecting the ports of two functional blocks cross原创 2020-12-14 22:42:26 · 95 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping!(LIS)
Problem DescriptionThe game can be played by two or more than two players. It consists of a chessboard(棋盘)and some chessmen(棋子), and all chessmen are marked by a positive integer or “start” or “end”. The player starts from start-point and must jumps into原创 2020-12-14 22:18:20 · 81 阅读 · 0 评论 -
线性DP (买卖股票系列)
线性dp 大盗阿福我们先看一个线性dp的经典题型题目链接题目大意就是,一个劫匪要劫店,这里的报警系统是相邻两家都被盗的时候才会报警,让你判断在不触发报警的情况下取得的最大价值.这道题dp做状态转移方程为:f[i][0]这i家店不抢的状态,它可以由前一个不抢的状态来获取也可以从前一个点被抢来获取;f[i][1]这家店抢劫的状态,它只能从前一个不抢的状态加上价值来获取所以就有下面的方程 f[i][0]=max(f[i-1][0],f[i-1][1]); f[i][1]=f[i-1][原创 2020-12-11 09:05:09 · 153 阅读 · 0 评论