首页 > TAG信息列表 > P2365
luogu P2365 任务安排
嘟嘟嘟 如果常规dp,\(dp[i][j]\)表示前\(i\)个任务分\(j\)组,得到 \[dp[i][j] = min _ {k = 0} ^ {i - 1} (dp[k][j - 1] + (s * j + sumt[i]) * (sumc[i] - sumc[k])) \] 复杂度是\(O(n ^ 3)\)的。 因此我们要换一个思路。 在执行一批任务时,我们虽然不知道之前机器启动过多少次,Luogu P2365 任务安排
解析 设 \(dp_i\) 表示处理完前 \(i\) 个时所花费的最小费用加上 \(i\) 因多分一组对后面产生的费用 \(dp_i = dp_j + sumt_i \times (sumf_i - sumf_j) + S \times (sumf_n - sumf_j)\) 然后斜率优化即可(\(n^2\) 其实可过) 对于两个状态 \(j,k\),当 \(dp_j - S \times sumf_j - (dp洛谷P2365/5785 任务安排 题解 斜率优化DP
任务安排1(小数据):https://www.luogu.com.cn/problem/P2365 任务安排2(大数据):https://www.luogu.com.cn/problem/P5785 题目描述 有 \(N\) 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这 \(N\) 个任务分成若干批,每一批包含连续的若干个任务。从时刻 \(0\)Luogu P2365 任务安排
题目链接:Click here Solution: 我们设\(f[i]\)表示我们把\(i\)单独划分出来后的对总答案的最小代价,\(c[i]\)表示花费的前缀和,\(t[i]\)表示时间的前缀和 \[ f[i]=f[j]+t[i]\times (c[i]-c[j])+S\times (c[n]-c[j])\\ f[i]=f[j]+t[i]\times c[i]-t[i]\times c[j]+S\times c[n]-S\timeP2365 任务安排 / [FJOI2019]batch(斜率优化dp)
P2365 任务安排 batch:$n<=10000$ 斜率优化入门题 $n^{3}$的dp轻松写出 但是枚举这个分成多少段很不方便 我们利用费用提前的思想,提前把这个烦人的$S$在后面的贡献先算掉 设$sv[i],st[i]$为费用、时间的前缀和 于是我们就可以得出一个$n^{2}$的方程 $f[i]=f[j]+(sv[i]-sv[j])*st[i]+