12 2018 档案

摘要:分析:这个题因为数据量非常小,可以直接用四维的DP数组 dp[i][j][k][l]表示第一个人走到位置(i,j),第二个人走到位置[k][l]时所取的数的最大和 状态转移方程可以轻松得出为:dp[i][j][k][l]=max(dp[i-1][j][k-1][l],max(dp[i-1][j][k 阅读全文
posted @ 2018-12-29 19:15 清酒令 阅读(389) 评论(0) 推荐(0)
摘要:例题见挑战程序设计竞赛P56 解释:子序列是从原序列中按顺序(可以跳着)抽取出来的,序列是不连续的,这是其和子串最大的区别; 我们可以定义dp数组为dp[i][j],表示的是s1-si和t1-ti对应的最长公共子序列长度 状态转移方程的话我们分为s[i],t[i]相同和s[i],t[i]不同时的情况 阅读全文
posted @ 2018-12-27 21:43 清酒令 阅读(323) 评论(0) 推荐(0)
摘要:洛谷P1359租用游艇 分析:这个游艇我看到题目下意识的就想将dp数组设为dp[i][j]表示i到j之间的最短距离,但题目上要求的只是从起点到终点的距离,这样设只是自找麻烦。 直接设成dp【i】表示从起点到i的最短距离。 状态转移方程是dp[i]=min(dp[i],dp[j]+a[i][j]),比 阅读全文
posted @ 2018-12-25 21:44 清酒令 阅读(237) 评论(0) 推荐(0)
摘要:洛谷P1510 分析:本质上还是一个01背包,将体力当做重量,体积当做价值。配上滚动数组 即dp[j]代表在体力耗费为j时最大能搬运多少体积的石头,当dp[j]>v时就说明存在满足情况的解,这样,就选择最小的j就可以了 PS:我这里用了个中间结果ans,其实没必要,可以直接在后面加上一个for循环, 阅读全文
posted @ 2018-12-22 21:32 清酒令 阅读(247) 评论(0) 推荐(0)
摘要:洛谷P1387 最大正方形 分析:画图模拟,发现以坐标(i,j)为右下顶点的正方形可以根据它左上方的三个点得到,就很轻松写出状态转移方程了。 代码: 阅读全文
posted @ 2018-12-19 15:27 清酒令 阅读(299) 评论(0) 推荐(0)
摘要:洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱不超过j,k时的最大愿望数。 则状态转移方程应该为:dp[i][j][k]=max(dp[i-1][ 阅读全文
posted @ 2018-12-19 13:57 清酒令 阅读(717) 评论(0) 推荐(0)
摘要:洛谷P1057 传球问题 分析:经过m次传球到第i个人的方法可以由经过m-1次传球到第i个人和到第i-1个人传递得来 设dp[i][j]为经过j次传球后到达第i个人的方法数,可得到状态转移方程为: dp[i][j]=dp[i-1][j-1]+dp[i+1][j-1]; 写循环时注意状态转移是跟着人来 阅读全文
posted @ 2018-12-19 13:27 清酒令 阅读(251) 评论(0) 推荐(0)
摘要:前言:很久没有发博客了,以后会捡起来,之后很长一段时间内我都会把精力放在攻克DP问题上,所以会经常上传一些DP学习笔记,把一些比较好的,没见过类型的DP问题都会传上来,希望能够变强吧。 因为今天很清醒的意识到世上有很多很优秀很惊艳的人,自己也要努力,努力成为那样的人啊 。 例题 洛谷P1164 小A 阅读全文
posted @ 2018-12-18 16:34 清酒令 阅读(209) 评论(0) 推荐(0)