随笔分类 -  NOIP-动态规划-斜率优化

摘要:题意 有一个数列,每个元素均有一个完成耗时$t_i$与完成耗费$f_i$,每个元素的耗费等于其完成时刻乘以完成耗费。可以将这些元素分为任意组,每一组的元素完成时刻一样。每一组都会有一个固定的额外时间耗费$s$。数据范围$3 10^5$。 思路 首先推出状态转移方程$dp[i]=min(dp[j]+s 阅读全文
posted @ 2019-08-19 20:14 Ilverene 阅读(138) 评论(0) 推荐(0)
摘要:题意 有n个关卡,每一关都会在僵尸队列的排头添加一只僵尸,同时排头与家的距离会发生变化。相邻僵尸之间的距离固定为$d$。 对于每一关,可以放置一颗任意攻击力的植物(每颗植物仅作用于当前关卡)。求攻击力总和最小值。 思路 显然$f[i]=max(\frac{sum[i] sum[j 1]}{x[i]+ 阅读全文
posted @ 2019-08-18 11:28 Ilverene 阅读(110) 评论(0) 推荐(0)
摘要:题意 给定若干长方形,可以将他们分为任意组,每一组的耗费为最长长乘以最长宽。求最小耗费。 思路 显然存在包含关系的长方形可以看成同一个长方形。 在去重之后,剩下的长方形满足长从小到大,宽从大到小。 那么有$f[i]=min(f[j]+a[i] b[j+1])$ $end$。 代码 没调出来,乱搞了一 阅读全文
posted @ 2019-08-16 18:45 Ilverene 阅读(110) 评论(0) 推荐(0)
摘要:题意 给定一个序列,可以将其分为任意段,每一段的值为$(len+L+\sum C_i)$,其中$L,C$给定。 求最大值。 思路 状态转移方程为$f[i]=min(f[j]+(i j+sum[i] sum[j] L 1)^2)$ 涉及到了平方直接展开比较恶臭,考虑将常数与变量分离,可以得到$f[i] 阅读全文
posted @ 2019-08-16 13:13 Ilverene 阅读(158) 评论(0) 推荐(0)
摘要:题意 给定一个序列,进行$k$次操作,每次操作将会分割序列。 对于每次操作,可以选择将任意一个区间在任意点分割开,得到左侧和乘以右侧和的收益。 求收益最大值。 思路 子状态$f[i][k]$表示前$i$个数割$k$次最大收益。 推出方程为$f[i][k]=max(f[j][k 1]+sum[j] ( 阅读全文
posted @ 2019-08-15 22:25 Ilverene 阅读(237) 评论(0) 推荐(0)
摘要:题意 有一个序列,要求将其分为任意部分。对于每一部分,其值为$at^2+bt+c$,其中$t$为这一部分元素总和,$a,b,c$给定。 思路 容易推出状态转移方程为$f[i]=min(f[j]+a (sum[i] sum[j])^2+b (sum[i] sum[j])+c)$ 朴素转移的时间复杂度为 阅读全文
posted @ 2019-08-15 22:09 Ilverene 阅读(200) 评论(0) 推荐(0)
摘要:题意 给定一个序列,对于每一项有两种操作: 操作1:放置一个守卫塔,耗费$a_i$ 操作2:放置一个木偶,耗费为与右侧第一个守卫塔之间的距离。 求最小耗费。 思路 子状态$f[i]$表示在$i$ 状态转移方程显然为$f[i]=min(f[j]+a[i]+(i j) (i j 1)/2)$。 复杂度为 阅读全文
posted @ 2019-08-15 13:02 Ilverene 阅读(258) 评论(0) 推荐(1)