题目链接:http://poj.org/problem?id=1180 题目描述: There is a sequence of N jobs to be processed on one machine. The jobs are numbered from 1 to N, so that the sequence is 1,2,..., N. The sequence of jobs must be partitioned into one or more batches, where ea…
POJ1180 Batch Scheduling Description There is a sequence of N jobs to be processed on one machine. The jobs are numbered from 1 to N, so that the sequence is 1,2,..., N. The sequence of jobs must be partitioned into one or more batches, where each ba…
题目大意:有n个任务,已知做每件任务所需的时间,并且每件任务都对应一个系数fi.现在,要将这n个任务分成若干个连续的组,每分成一个组的代价是完成这组任务所需的总时间加上一个常数S后再乘以这个区间的系数和.求最小代价. 题目分析:分组求最优值得问题.不过,这道题采用倒推可能要好做一些.定义状态dp(i)表示完成从第 i 个任务到第n个任务需要的最小代价,则状态转移方程为 dp(i)=min(dp(j)+(sumt(i)-sumt(j)+s)*sumf(i),很显然的要用斜率优化. 代码如下: #…
题解 将费用提前计算可以得到状态转移方程: $F_i = \min(F_j + sumT_i * (sumC_i - sumC_j) + S \times (sumC_N - sumC_j)$ 把方程进行分离, 得到 $S\times sumC_j  + F_j = sumT_i \times sumC_j + F_i - S \times sumC_N$. 将等号左边看成纵坐标, $sumC_j$看成横坐标, $sumT_i$为斜率来进行斜率优化. 由于 $sumT_i$是递增的, 即斜率是递…
Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3590   Accepted: 1654 Description There is a sequence of N jobs to be processed on one machine. The jobs are numbered from 1 to N, so that the sequence is 1,2,..., N. The sequence of jobs m…
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 小根堆 排序 日期 题目地址:https://leetcode.com/problems/two-city-scheduling/ 题目描述 There are 2N people a company is planning to interview. The cost of flying the i-th person to city A is c…
P2365 任务安排 batch:$n<=10000$ 斜率优化入门题 $n^{3}$的dp轻松写出 但是枚举这个分成多少段很不方便 我们利用费用提前的思想,提前把这个烦人的$S$在后面的贡献先算掉 设$sv[i],st[i]$为费用.时间的前缀和 于是我们就可以得出一个$n^{2}$的方程 $f[i]=f[j]+(sv[i]-sv[j])*st[i]+(sv[n]-sv[j])*S$ 拆开:$f[i]=f[j]+sv[i]*st[i]-sv[j]*st[i]+sv[n]*S-sv[j]*S$…
最近开始重拾算法,在 LeetCode上刷题.顺便也记录下解题报告以及优化思路. 题目链接:1.两数之和 题意 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 示例: nums = [2, 7, 11, 15], target = 9 返回 [0, 1] 题意很简单,就是寻找两个数,这两个数相加的值等于 target.且保证每组输入一定会有…
Batch Scheduling \(solution:\) 这应该是斜率优化中最经典的一道题目,虽然之前已经写过一道 \(catstransport\) 的题解了,但还是来回顾一下吧,这道题其实较那一道还是难一些,只不过 \(catstransport\) 很难找到最好码代码的式子. 首先单调队列优化是用来优化一些转移方程里面存在只与枚举的决策或当前状态中的单独某一个存在关系的项的动态规划,而我们的斜率优化是用来优化一些转移方程里面存在与枚举的决策和当前状态都有直接关系的项的动态规划的(当然斜…
[题目链接] http://poj.org/problem?id=1180 [题目大意] N个任务排成一个序列在一台机器上等待完成(顺序不得改变), 这N个任务被分成若干批,每批包含相邻的若干任务. 从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti. 在每批任务开始前,机器需要启动时间S, 而完成这批任务所需的时间是各个任务需要时间的总和(同一批任务将在同一时刻完成). 每个任务的费用是它的完成时刻乘以一个费用系数Fi.请确定一个分组方案,使得总费用最小 [题解] 我们可以得…