摘要: 这题用堆的思路来模拟。因为不会用堆去重所以只是借鉴思路来模拟。 这题还有的就是序数词的输出,个位是1,2,3,十位是1的时候进行特判。 兼顾时间复杂度所以在预处理中打个表。 阅读全文
posted @ 2019-10-22 13:22 逐梦——无畏 阅读(104) 评论(0) 推荐(0)
摘要: 这题是动态规划。 状态设计:很经典的设计dp[i][j]表示从i个物品中选择j个物品来搬运的最小劳累度,很自然的想到答案便是dp[n][k]。 转移方程:因为疲劳度是关于两个物品的,转移的条件就是i选和不选,假设i不选,那么就是前i-1个选j对,也就是dp[i][j]=dp[i-1][j].假设第i 阅读全文
posted @ 2019-10-22 13:14 逐梦——无畏 阅读(78) 评论(0) 推荐(0)
摘要: 这题属于最大不连续字段和。 因为它是二维的所以把第i行做一次线性dp,压成dp[i]来储存,再在dp数组中做一次最大不连续字段和求答案就好啦,一道二维的题目,秒变一维的。 状态表示:dp[i]代表第i行在做最大不连续字段和的最终值。 转移方程:当i大于2——如果dp[i]从它的前一位转移而来那么它的 阅读全文
posted @ 2019-10-22 12:58 逐梦——无畏 阅读(82) 评论(0) 推荐(0)
摘要: 背包问题的模板,以后可以背下来套用噢。 但是更多的时候要像 传送门 一样有转换的过程 阅读全文
posted @ 2019-10-21 20:31 逐梦——无畏 阅读(98) 评论(0) 推荐(0)
摘要: 这是动态规划的分组背包 阅读全文
posted @ 2019-10-21 20:06 逐梦——无畏 阅读(185) 评论(0) 推荐(0)
摘要: 这是动态规划之01背包。 与01背包所不一样的是它的花费价值是浮点型的,所以状态改为dp[i]代表获得i的价值需要(double)dp[i]的代价,由此可知得到答案时反向遍历(优化时间复杂度),并且输出的是i这个变量。 这题计算的是概率,所以dp更新时用乘法而不是加法。 阅读全文
posted @ 2019-10-21 19:24 逐梦——无畏 阅读(91) 评论(0) 推荐(0)
摘要: 这是一题模拟加桶排。 先分支判断是行相邻还是列相邻,再用2个数组分别存储行和列的过道可以隔开多少对,找出可以隔开的最多的过道,并输出。 阅读全文
posted @ 2019-10-21 14:29 逐梦——无畏 阅读(124) 评论(0) 推荐(0)
摘要: 这题是动态规划,贪心和排序。 状态表示:d[i]表示前i位的最长满足要求子序列的长度。 状态转移:当重量严格大于前一只并且速度严格大于前一只的时候更新转移数组 d[i]=max(d[i],d[j]+1); 因为不仅要求输出最长的子序列的长度,还要求输出编号,就注意推理,为了减少时间复杂度把小老鼠的体 阅读全文
posted @ 2019-10-21 12:56 逐梦——无畏 阅读(73) 评论(0) 推荐(0)
摘要: 这题是动态规划之多重背包。 状态表示:dp[i]表示花费i元可以获得的最重粮食重量 阅读全文
posted @ 2019-10-21 12:48 逐梦——无畏 阅读(104) 评论(0) 推荐(0)
摘要: 这题是动态规划,枚举 状态表示:dp[i][j]代表从(1,1)走到(i,j)位置可以获得的最多幸运值 转移方程:(1)如果i==1并且j==1幸运值就为a[i][j]的本身 (2)如果i-1>0 dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i][j]); (3)如果j-1 阅读全文
posted @ 2019-10-21 12:41 逐梦——无畏 阅读(80) 评论(0) 推荐(0)