![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DP
文章平均质量分 53
简单dp
向上的yyy
路漫漫其修远兮,吾将上下而求索
展开
-
1277:【例9.21】方格取数——数字三角形模型
【题目描述】设有N×N的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角A出发,可以向下行走,也可以向右行走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从A点到B点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。【输入】第一行为一个整数N(N≤10),表示N×N的方格图。接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。原创 2023-01-10 21:05:24 · 837 阅读 · 1 评论 -
1287:最低通行费——数字三角形模型
【题目描述】一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。【输入】第一行是一个整数,表示正方形的宽度N (1≤N原创 2023-01-10 18:14:27 · 917 阅读 · 0 评论 -
1284:摘花生——数字三角形模型
【题目描述】Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。【输入】第一行是一个整数T,代表一共有多少组数据。1≤T≤100接下来是T组数据。原创 2023-01-10 18:14:18 · 509 阅读 · 0 评论 -
7-57 租用游艇问题——dp
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1原创 2022-12-02 12:02:23 · 772 阅读 · 0 评论 -
7-46 回文串问题——LCS
一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21。原创 2022-11-30 15:53:31 · 518 阅读 · 0 评论 -
1275:【例9.19】乘积最大——dp
【题目描述】今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积最大。原创 2022-11-28 17:48:57 · 256 阅读 · 0 评论 -
1276:【例9.20】编辑距离——dp
【题目描述】设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:1、删除一个字符;2、插入一个字符;3、将一个字符改为另一个字符。对任意的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。【输入】第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于2000。【输出】只有一个正整数,为最少字符操作次数。【输入样例】sfdqxbwgfdgw【输出样例】4。原创 2022-11-28 15:49:16 · 250 阅读 · 0 评论 -
7-30 找单词——多重背包求方案数
假设有x1个字母A, x2个字母B,… x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,… 字母Z的价值为26。那么,对于给定的字母,可以找到多少价值原创 2022-11-28 14:38:17 · 401 阅读 · 2 评论 -
P1164 小A点菜——01背包
uim 神犇拿到了 uoi 的 ra(镭牌)后,立刻拉着基友小 A 到了一家……餐馆,很低端的那种。uim 指着墙上的价目表(太低级了没有菜单),说:“随便点”。原创 2022-09-21 11:15:25 · 198 阅读 · 0 评论 -
1265:【例9.9】最长公共子序列 LCS 朴素做法O(n*2)
分析最长公共子序列的模板题,参考视频:最长公共子序列 - 动态规划;如果第一个序列的第i个字符,与第二个序列的第j个字符相等时,则i,j这个点的dp值为左上角的dp值+1;否则为,该点上面那个点和左面那个点其中的最大值。由于i,j从1开始遍历的,所以在比较字符的时候,要注意为-1;状态转移方程:if a[i-1]==b[j-1]:dp[i][j]=dp[i-1][j-1]+1else:dp[i][j]=max(dp[i-1][j],dp[i][j-1])要明白子序列和子串的区别:子串中字符的.原创 2022-05-08 21:33:07 · 467 阅读 · 1 评论 -
1269:【例9.13】庆功会 多重背包
分析由于此题每件物品可以选给定的某一数量件,这就是多重背包的知识,有点像P1616 疯狂的采药 完全背包中的01背包思路的解法,毕竟我觉得多重背包就是特殊的完全背包,因为虽然每件物品可以多选,但是多重背包选取的件数k是根据题目给出的范围选取的,完全背包通过当前容量最多装取的个数选取的;复习一下:01背包是每种物品只有一件,复习一维背包,戳这里P1048 采药 java 01背包;完全背包就是没件物品随便选,复习完全背包,戳这里P1616 疯狂的采药 完全背包;总结:在一维dp中,需要.原创 2022-05-05 17:50:27 · 1255 阅读 · 0 评论 -
P1616 疯狂的采药 完全背包
分析01背包和完全背包的总结:参考视频:完全背包视频,讲的真好,没听懂来打我;01背包是每件物品只有一个,但完全背包每件物品可以选多个,这就是两者的区别;此题就是完全背包的模板题;01背包和完全背包的二维递推方程区别在于:选取不选取物品的时候有所不同。完全背包如果选取当前物品的时候,我们是在当前行的容量j为减去当前物品体积时的dp值;而01背包的选取依赖于上一行也就是前i-1件商品的容量j为减去当前物品体积时的dp值。01背包和完全背包的一维递推方程:他两看着长起来一模一样,但是他们的实质.原创 2022-05-04 17:58:48 · 406 阅读 · 2 评论 -
P1002 [NOIP2002 普及组] 过河卒
dfs了一发,谁着超时了。原创 2022-05-04 00:28:43 · 571 阅读 · 0 评论 -
P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles 递推
分析其实就是从上面到下面,从两个方向下来,我们数组从1开始赋值,就可以不用考虑越界的事了;#include "bits/stdc++.h"using namespace std;typedef long long ll;int dp[1010][1010];int main() { int r; cin >> r; for (int i = 1; i <= r; ++i) { for (int j = 1; j <= i; +.原创 2022-05-03 23:06:43 · 188 阅读 · 0 评论 -
P1802 5 倍经验日——01背包
分析01背包问题参考:1. P1060 [NOIP2006 普及组] 开心的金明 java_ 01背包2. P1048 采药 java 01背包3. 当题目的价值比较大的时候,我们要注意数据范围的问题,此题需要用龙long long类型,不然最后一个点过不去;4. 在能满足嗑药的时候,我们通过选择嗑药或者不嗑药,去选择其中能达到最大价值的选择;5. dp[i][j]表示:对于前i个人,在药瓶还可以选择j的时候,所能达到商品的最大价值;6. 最后不要忘记乘5;#include "bits/..原创 2022-05-03 22:58:10 · 431 阅读 · 0 评论 -
1281:最长上升子序列 LIS dp
分析 O (n^2)参考大佬:最长回文子串 and 最长回文子序列#include "bits/stdc++.h"using namespace std;int a[1010];int dp[1010];//dp[i]表示代表以 a[i] 结尾的 LIS 的长度int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%d", &a[.原创 2022-05-01 13:52:05 · 330 阅读 · 0 评论 -
P1048 采药 java 01背包
分析二维dp参考:https://blog.csdn.net/weixin_51995229/article/details/124019235?spm=1001.2014.3001.5501几乎一模一样,模板题import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); .原创 2022-04-07 20:40:24 · 491 阅读 · 0 评论 -
P1060 [NOIP2006 普及组] 开心的金明 java_ 01背包
分析此题每件物品的价值为:他的等级乘他的价钱;直接在输入时初始化;一个记录每件商品的重量的数组weight,一个记录每件商品的价值数组valuue,以及dp[i][j] 表示从下标为[1-i]的物品⾥任意取,放进容量为j的背包,价值总和最⼤是多少;递推公式:3.1 如果当前背包容量不够装:dp[i][j] = dp[i - 1][j];3.2 够装: dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[..原创 2022-04-07 16:15:55 · 471 阅读 · 0 评论 -
2021模拟赛 跳跃 java_dfs_动态规划
分析我们可以发现,从一个点开始,一共有9个点可以到达,我们通过dfs,用一个for循环搜索这9个可达点;在搜索时,对于多个方向走的问题,我们用一个偏移量dx_dy,一维为x,二维为y;我们要注意判断对当前点x,y加上偏移量后变成的xx,yy要判断其是否在有效范围内,不能越界;dfs出口就是,搜索到了终点,我们用一个ans来记录到达终点的最大权值和;通过取当前的ans值和该条路径权值和的最大值;import java.util.Scanner;public class Main { ..原创 2022-03-29 20:54:03 · 684 阅读 · 0 评论 -
2013省赛 买不到的数目 java_数论_dp
分析1.数论如果输入的两个数不互质,比如一个2、一个4,那么最大不能达到的数字为无穷,即无解,题目保证此题有解;那么输入的两个数就是互为质数;对互质的两个数:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextI.原创 2022-03-27 17:07:30 · 456 阅读 · 0 评论