线性dp
文章平均质量分 76
线性dp
Landing_on_Mars
这个作者很懒,什么都没留下…
展开
-
Sushi,(期望 dp,概率dp,线性dp )
Problem StatementThere are N dishes, numbered ,2,…,N. Initially, for each i (1≤i≤N), Dish i has ai (1≤ai≤3) pieces of sushi on it.Taro will perform the following operation repeatedly until all the pieces of sushi are eaten:Find the expected number of tim原创 2023-12-02 21:32:55 · 901 阅读 · 0 评论 -
[ABC261E] Many Operations(dp,位运算,打表)
[ABC261E] Many Operations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)Problem StatementWe have a variable X and N kinds of operations that change the value of X. Operation i is represented as a pair of integers (Ti,Ai), and is the following operation:Initialize X wi原创 2023-11-29 21:53:07 · 789 阅读 · 0 评论 -
多关键字dp,P1687 机器人小Q
f[i][j][1] 表示表示从前 i 个能量中选取 j 个的最小天数,f[i][j][0] 表示这种情况下的当天消耗的时间;这时候直接继承前面的状态f[i][j][0]=f[i−1][j][0],f[i][j][1]=f[i−1][j][1]若f[i][j][1]=f[i−1][j−1][1]+1,f[i][j][0]=w[i]f[i−1][j−1][1]+1=f[i][j][1],那么这时候比较第二关键字。因此比较f[i−1][j−1][1]+1 与f[i][j][1] 的大小关系。原创 2023-11-12 20:41:30 · 428 阅读 · 0 评论 -
1010. 拦截导弹,贪心(附贪心证明),dp
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。原创 2023-11-11 21:48:51 · 95 阅读 · 0 评论 -
P1356 数列的整除性,线性dp
对于一个整数数列来说,我们能通过如上的方法构造出不同的表达式,从而得到不同的数值,如果其中某一个数值能够被 k 整除的话,我们就称该数列能被 k 整除。状态转移方程:f[i][j] = f[i - 1][((j - a[i]) % k + k) % k] || f[i - 1][((j + a[i])%k + k) % k];考虑到k比较小,令f[i][j]表示加上或减去第i个数后模k是否可能等于j,则答案为f[n][0]。对于全部的测试点,保证 1≤n≤104,2≤k≤100,∣ai∣≤104。原创 2023-11-11 19:25:10 · 188 阅读 · 0 评论 -
NEFU 1496,绿巨人吃绿苹果,线性dp
从前有一个绿巨人,他有个习惯是每餐只吃n个绿苹果。他有一棵神树,无限大,每一层都有且仅有k个枝杈,这k个枝杈上正好分别有1,2,3...,k个苹果。为了锻炼身体,他在同一层仅仅能选择吃完一个枝丫上的所有苹果,至少有一个枝杈是不小于d个苹果的,请帮助他计算在满足他的条件情况下,他吃掉n个苹果有多少种方法,他从树根出发(树根为1)。方法数可能很多,最后结果对1000000007 (1e9+7)取余。第一行输入有三个数字用空隔隔开,n k和d(取值范围:1≤n,k≤100;原创 2023-11-11 16:38:12 · 98 阅读 · 0 评论 -
P1052 [NOIP2005 提高组] 过河,线性dp,路径压缩,裴蜀定理
由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,⋯ ,L(其中 L 是桥的长度)。坐标为 0 的点表示桥的起点,坐标为 L 的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。当青蛙跳到或跳过坐标为 L 的点时,就算青蛙已经跳出了独木桥。题目给出独木桥的长度 L,青蛙跳跃的距离范围 S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。一个整数,表示青蛙过河最少需要踩到的石子数。NOIP 2005 提高组第二题。原创 2023-11-08 13:27:42 · 79 阅读 · 0 评论 -
栈,线性dp,P1310 [NOIP2011 普及组] 表达式的值
第2 行为一个字符串包含 L 个字符,其中只包含’(’、’)’、’+’、’*’这44 种字符,其中’(’、’)’是左右括号,’+’、’*’分别表示前面定义的运算符“⊕”和“×”。现给定一个未完成的表达式,例如_+(_*_),请你在横线处填入数字00或者11 ,请问有多少种填法可以使得表达式的值为00。在横线位置填入(0 、0 、0) 、(0 、1 、0) 、(0 、0 、1) 时,表达式的值均为0 ,所以共有3种填法。第1 行为一个整数 L,表示给定的表达式中除去横线外的运算符和括号的个数。原创 2023-11-07 22:25:12 · 128 阅读 · 0 评论 -
P1651 塔,线性dp
小明很喜欢摆积木,现在他正在玩的积木是由 N 个木块组成的,他想用这些木块搭出两座高度相同的塔,一座塔的高度是搭建它的所有木块的高度和,并且一座塔至少要用一个木块。目前已知每块木块的高度,小明想知道在最终两个塔的高度相同的情况下,他所能搭的塔的最大高度是多少,你能帮助他吗?对于 100% 的数据,N≤50 ,每块木块的高度 ℎ 满足 1≤h≤500000,所有木块的高度总和 ≤500000。仅一个整数,表示能搭建的塔的最大高度,若不能搭建两座相同高度的塔,则输出。第一行为一个整数 N,表示木块个数。原创 2023-11-07 14:16:22 · 66 阅读 · 0 评论 -
P2432 zxbsmk爱查错,字符串线性dp
然而zxbsmk的英语水平非常低,所以他买来了一本英语词典,词典里一共有W (1原创 2023-11-06 20:12:56 · 89 阅读 · 0 评论 -
P2359 三素数数 , 线性dp
如果一个数的所有连续三位数字都是大于100的素数,则该数称为三素数数。比如113797是一个6位的三素数数。原创 2023-11-01 00:39:01 · 153 阅读 · 0 评论 -
P1523 旅行商简化版, 路径dp
现在笛卡尔平面上有 n(n≤1000) 个点,每个点的坐标为(x,y),(−231原创 2023-10-25 23:46:12 · 142 阅读 · 0 评论 -
P1006 [NOIP2008 提高组] 传纸条,棋盘型dp,路径dp
纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 (1,1),小轩坐在矩阵的右下角,坐标 (m,n)。还有一件事情需要注意,全班每个同学愿意帮忙的好感度有高有低(注意:小渊和小轩的好心程度没有定义,输入时用 0 表示),可以用一个 [0,100] 内的自然数来表示,数越大表示越好心。f[i][j][k][l] 表示:第一条路径从(1,1)出发到(i,j),第二条路径从(1,1)出发到(k,l),且严格不相交的两条路的权值的和的最大值。对于 100% 的数据,满足 1≤m,n≤50。原创 2023-10-25 21:09:41 · 151 阅读 · 0 评论 -
P1650 田忌赛马,贪心,线性dp
由于齐王总是先出最好的马,再出次好的,所以田忌用常规马对齐王的超级马,用自己的超级马对齐王的上级马,用自己的上级马对齐王的常规马,以两胜一负的战绩赢得 200 银币。齐王的马好,同等级的马,齐王的总是比田忌的要好一点。2.a 中剩下的最慢的马不比 b 中剩下最慢的马快,且比 b 中最快的马慢,则用 a 中最慢的马输给 b 中最快的马,否则说明剩下的马都能两两打平。其实如果存在这种情况,那么 a 中倒数第二慢的马一定能赢 b 中最慢的马(因为性质的最后一句),且 a 中最快的马一定能赢 b 中第二快的马。原创 2023-10-20 20:37:42 · 167 阅读 · 0 评论 -
寻宝游戏,五维dp
小Q最近迷上了一款寻宝游戏,这款游戏中每局都会生成一个n×m的网格地图,从上往下依次编号为第1行到第n行,从左往右依次编号为第1列到第m列。每个格子上都有不同数量的金币,第i行第j列的格子上的金币数量为ai,j。小Q一开始位于(1,1),每次他可以往右或者往下走,每当他经过某个格子时,他就可以拿走这个格子上的所有金币。小Q不能走出这个地图,当小Q不能再行动时,游戏结束。显然当且仅当小Q位于(n,m)时,游戏才会结束。原创 2023-10-17 16:53:17 · 117 阅读 · 0 评论 -
带长度限制的最大子段和,无名一
将所有元素取反后求1到n中最大子段和X(原序列的最小字段和),然后用序列所有元素的和减去X。第一行一个正整数n 表示序列长度,接下来n 行每行一个整数ai 表示。这道题目是是带长度限制的最大字段和的特殊情况:长度的限制恰好为n。这题目太水了,加强一点,环形序列求最大子段和!一个整数表示环形最大子段和,所选子段可以为空!因为是环形的所以第n个数 后面是第1个数;1.最大子段和是1到n中的连续一段。给你一个序列,让你求最大子段和!2.最短字段和是两端的两段和。两个结构取最大值即使答案。直接用朴素做法求即可。原创 2023-09-27 21:45:29 · 130 阅读 · 0 评论 -
dp,贪心,最长上升子序列升级版
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。−109≤数列中的数≤109−109≤数列中的数≤109。第二行包含 N 个整数,表示完整序列。使用二分优化,时间复杂度为nlogn。输出一个整数,表示最大长度。第一行包含整数 N。原创 2023-07-25 22:48:51 · 138 阅读 · 0 评论 -
线性dp,毫哥和巨佬的故事
毫哥说决定我的能力的数字中的各个位的值不能包含0,并且数字的各个位的值的和得等于x;例如:x=5时,满足毫哥的能力值可以为:113, 23, 5但是对于50虽然和是5,但是含有0就不是毫哥的能力值。众所周知,毫哥和巨佬是好朋友,他们各有所好,毫哥喜欢数字,巨佬喜欢取余,有一天他们决定来玩一个游戏来决定谁的能力更高。巨佬说决定我的能力的数字必须得整除y;例如:y=10时,0,100,200等都是巨佬的能力值。DP的核心思想是用集合来表示一类方案,然后从集合的维度来考虑状态之间的递推关系。原创 2023-09-24 13:15:41 · 110 阅读 · 0 评论 -
线性dp,优化,库特鸽鸽的时间分配
f[i][0]=1,但如果 sum[0] 等一 f[i][0] 的话 sum[j]-sum[max(j-a[i]-1,0)] 就永远算不到 f[i][0] 所以我们定义 sum[j+1] 为f[i-1] 的前j个前缀的和。特别地,对于迷妹i(1原创 2023-09-23 20:42:39 · 104 阅读 · 0 评论 -
线性dp,274. 移动服务,《算法竞赛进阶指南》
一个公司有三个移动服务员,最初分别在位置 1,2,3 处。如果某个位置(用一个整数表示)有一个请求,那么公司必须指派某名员工赶到那个地方去。某一时刻只有一个员工能移动,且不允许在同样的位置出现两个员工。从 p 到 q 移动一个员工,需要花费 c(p,q)。这个函数不一定对称,但保证 c(p,p)=0。给出 N 个请求,请求发生的位置分别为 p1∼pN。公司必须按顺序依次满足所有请求,,目标是最小化公司花费,请你帮忙计算这个最小花费。原创 2023-09-17 20:23:27 · 107 阅读 · 0 评论 -
273. 分级(线性dp,优化记录)
273. 分级只需要求出这个最小值 S。原创 2023-09-17 14:38:36 · 218 阅读 · 0 评论 -
线性dp,优化记录,272. 最长公共上升子序列
熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了。小沐沐说,对于两个数列 A 和 B,如果它们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列,而所有的公共上升子序列中最长的就是最长公共上升子序列了。奶牛半懂不懂,小沐沐要你来告诉奶牛什么是最长公共上升子序列。不过,只要告诉奶牛它的长度就可以了。数列 A 和 B 的长度均不超过 3000。原创 2023-09-16 12:03:04 · 88 阅读 · 0 评论 -
线性dp,897. 最长公共子序列
给定两个长度分别为 N 和 M 的字符串 A 和 B,求既是 A 的子序列又是 B 的子序列的字符串长度最长是多少。原创 2023-09-14 22:29:14 · 175 阅读 · 0 评论 -
线性dp,271. 杨老师的照相排列
有 N 个学生合影,站成左端对齐的 k 排,每排分别有 N1,N2,…,N 个人。第 1 排站在最后边,第 k 排站在最前边。学生的身高互不相同,把他们从高到底依次标记为 1,2,…,N。在合影时要求每一排从左到右身高递减,每一列从后到前身高也递减。问一共有多少种安排合影位置的方案?下面的一排三角矩阵给出了当 N=6,k=3,N1=3,N2=2,N3=1时的全部 16 种合影方案。注意身高最高的是 1,最低的是 6。原创 2023-09-14 21:41:59 · 129 阅读 · 0 评论 -
dp,优化记录,打扑克
若放入之前这列牌中已有与这张牌花色相同的牌,你可以选择将这张牌和任意一张花色相同的牌之间的所有牌全部取出队列(包括这两张牌本身),并得到与取出的所有牌点数和相同的分数。即,ci表示第 i 张放入的牌的花色,vi表示第 i 张放入的牌的点数。使用数组 MAX[col[i]] 记录已经出现过的花色为 col[i] 的 f[i-1]-sum[i-1]三个数组,col:花色,sum:前缀和,MAX:f[i-1]-sum[i-1];第 4 步,向队列加入 2,取出 2,1,2。现在的队列:1,2,1。原创 2023-09-11 21:36:57 · 311 阅读 · 0 评论