dp
一个有思想的逗号
这个作者很懒,什么都没留下…
展开
-
蓝桥杯练习系统(算法训练)ALGO-939 区间最大和
思路:dp[i]:表示以第i个数字结尾的序列和最大值为dp[i]。因此,最大的dp[i]即为答案。思路: 利用前缀和,通过sum[R]-sum[L-1]求[L,R]区间的和。暴力方法是将每个区间的和都算出来,取最大值,这样的话时间复杂度为O(n^2),会超时。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。给定一段长度为N的整数序列A,请从中选出一段连续的子序列(可以为0)使得这段的总和最大。一个整数表示选出的最大的和。原创 2024-05-20 20:43:33 · 136 阅读 · 0 评论 -
蓝桥杯练习系统(算法训练)ALGO-965 进击的青蛙
青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N。桥上的一些点有一些石子,这些点是无法跳上去的。青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端的总方法数。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。接下来N行,表示从点1~N的道路情况,每行一个数字0或1,1表示有石子。输出一行,为一个整数,代表方法数,无法到达为“No Way!第一行一个数字N,代表桥的长度。原创 2024-03-27 08:28:03 · 296 阅读 · 0 评论 -
最长公共子序列(Longest Common Subsequence,LCS)
f[i][j]为s1的前i个字符和s2的前j个字符的最长子序列长度。因此答案为f[s1.length()][s2.length()]。例:两序列algorithms、alchemist的最长公共子序列为alhms,长度为5。问题描述:给定两个序列s1,s2,求二者的最长公共子序列长度。得到f[i][j]后,通过LCS函数递归求得最长公共子序列。想要求f[i][j],可以根据前i-1、j-1个字符求得。f[i][j]=0,i=0或j=0。原创 2024-03-24 09:48:38 · 142 阅读 · 0 评论 -
0-1背包
思路:在面临第i件物品时,可以选择不偷:f[i-1][j],也可以选择偷:f[i-1][j-w[i]]+v[i],取两者的最大值即为f[i][j]的值。物品编号:1 2 3 4。物品重量:2 3 4 5。物品价值:3 4 5 8。现有4个物品,小偷背包总容量为8,怎么可以偷得价值最多的物品?原创 2024-03-23 09:28:53 · 193 阅读 · 0 评论 -
洛谷——P1352 没有上司的舞会
2、不选u,dp[u][0]+=max(dp[s1][0],dp[s1][1])+max(dp[s2][0],dp[s2][1])对于 100% 的数据,保证 1≤n≤6×10^3,−128≤ri≤127,1≤l,k≤n,且给出的关系一定是一棵树。dp[u][0]表示:以u为根节点的子树并且不包括u的最大快乐指数;1、选u,dp[u][1]+=dp[s1][0]+dp[s2][0]dp[u][1]表示:以u为根节点的子树并且包括u的最大快乐指数。输出一行一个整数代表最大的快乐指数。原创 2024-03-14 22:18:36 · 364 阅读 · 0 评论 -
蓝桥杯练习系统(算法训练)ALGO-981 过河马
一开始,它是在一个n行m列棋盘的左下角(1,1)的位置,它想要走到终点右上角(n,m)的位置。dp[i][j]:表示从(1,1)到(i,j)一共有dp[i][j]种方法,所以答案为dp[n][m]。dp[i][j]=dp[i-1][j-2]+dp[i-2][j-1]+dp[i-2][j+1]+dp[i-1][j+2],分别对应着走法1、2 、3、4,只不过还要判断一下有没有越界。第一行两个数n,m,表示一个n行m列的棋盘,马最初是在左下角(1,1)的位置,终点在右上角(n,m)的位置。原创 2024-03-09 18:33:02 · 411 阅读 · 0 评论 -
蓝桥杯练习系统(算法训练)ALGO-987 强力党逗志芃
逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能)。学习每个技能要消耗一个技能点,然后可以获得这个技能的威力值。之后的n-1行,每行两个数x,y,表示y技能的前提技能是x,也就是说先学第x个技能才能学弟y个技能。第一行两个数n,m表示有n个技能和m个技能点。第二行有n个数,第i个数表示第i个技能的威力值。0<n,m<=200, 技能的威力值不超过200。原创 2024-03-05 13:44:39 · 182 阅读 · 0 评论 -
蓝桥杯练习系统(算法训练)ALGO-988 逗志芃的危机
逗志芃又一次面临了危机。现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从最前面或者最后面取走一个数,全部取完则游戏结束,之后每个人取走的数的和就是每个人的得分。(注意,妹子智商是maxlongint所以是不会犯错的,每次的策略必然最优,而且逗志芃是先手)可以举个例子来理解:当只有两个数的时候(data[L]和data[R]),要么取左边,要么取右边,ans[L][R]=max(data[L],data[R]),ans[L+1][R]自然为0。原创 2024-03-04 21:23:50 · 467 阅读 · 1 评论