摘要: 原来这样区间查询的题目原来是要用线段树的,但是…… 这题可以用ST表(RMQ) 阅读全文
posted @ 2019-10-22 20:40 逐梦——无畏 阅读(80) 评论(0) 推荐(0)
摘要: 这题的考点涉及了高精度(乘法)模拟和动态规划。 状态设计:dp[i][j]这个结构体表示在i个数中间放j个乘号的最大结果。 转移方程:我们需要枚举最后一个乘号是在哪里放的,直接计算一下最后一个乘号之前的数字加入k-1个乘号时的最大值,再乘以最后一个乘号之后的数字。 高精在这题有这几个应用: 1.取数 阅读全文
posted @ 2019-10-22 20:21 逐梦——无畏 阅读(113) 评论(0) 推荐(0)
摘要: DP+贪心。 根据开始时间先后排序。 第i时刻的最大空闲时间是和后面i+选择任务的持续时间的时刻有关系的,那么,正着找肯定是不行的,我们来试一下倒着搜。 状态表示:dp[i]代表往前推到i时的最大空闲时间。 转移方程: (1)本时刻无任务 dp[i]=dp[i+1]+1; //继承上一个时刻的最大空 阅读全文
posted @ 2019-10-22 20:01 逐梦——无畏 阅读(96) 评论(0) 推荐(0)
摘要: 这题画风清奇,与这题相似。 状态设计:dp[step][i][j]代表已经走了step步,第一条路末尾在i行,第二条路末尾在j行。因为记录了步数,便得第一条路末尾在(step-i)列,第二条路末尾在(step-j)列。 转移方程:如果i==j那么(step-i)==(step-j),得两条路末尾处于 阅读全文
posted @ 2019-10-22 19:52 逐梦——无畏 阅读(163) 评论(0) 推荐(0)
摘要: 这题是依赖背包。 首先说明分组背包和依赖背包的区别:“分组背包”=“依赖背包”-“01背包”。 至于预处理可以参见分组背包的处理方法。 设计状态:dp[i]代表花费i元可以获得的最大价值。 转移方程:因为“分组背包”=“依赖背包”-“01背包”,所以“金明的预算方案”=“依赖背包”=“01背包”+“ 阅读全文
posted @ 2019-10-22 19:36 逐梦——无畏 阅读(150) 评论(0) 推荐(0)
摘要: 既然我放在动态规划这个分类,不是动态规划是什么??? 既然没有规定乌龟卡的使用顺序,那么用桶排,sum[i]记录i类卡的张数。 状态设计:当数据范围不大,并且情况不多的题,可以试试每一维记录一个元素的状态。dp[a][b][c][d]代表用了a张1类牌,b张2类牌,c张3类牌和d张4类牌时可以获得的 阅读全文
posted @ 2019-10-22 19:23 逐梦——无畏 阅读(128) 评论(0) 推荐(0)
摘要: 这题就是二维前缀和。 阅读全文
posted @ 2019-10-22 13:27 逐梦——无畏 阅读(111) 评论(0) 推荐(0)
摘要: 这题是完全背包啊。 与众不同的是它是用背包取的最小值,所以边界条件有讲究:dp[0]=0,其他的赋值为inf(无穷大),这样方便取min操作。 阅读全文
posted @ 2019-10-22 13:26 逐梦——无畏 阅读(92) 评论(0) 推荐(0)
摘要: 这题用堆的思路来模拟。因为不会用堆去重所以只是借鉴思路来模拟。 这题还有的就是序数词的输出,个位是1,2,3,十位是1的时候进行特判。 兼顾时间复杂度所以在预处理中打个表。 阅读全文
posted @ 2019-10-22 13:22 逐梦——无畏 阅读(103) 评论(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 逐梦——无畏 阅读(76) 评论(0) 推荐(0)
摘要: 这题属于最大不连续字段和。 因为它是二维的所以把第i行做一次线性dp,压成dp[i]来储存,再在dp数组中做一次最大不连续字段和求答案就好啦,一道二维的题目,秒变一维的。 状态表示:dp[i]代表第i行在做最大不连续字段和的最终值。 转移方程:当i大于2——如果dp[i]从它的前一位转移而来那么它的 阅读全文
posted @ 2019-10-22 12:58 逐梦——无畏 阅读(79) 评论(0) 推荐(0)