题目描述

n 个任务排成一个序列在一台机器上等待完成(顺序不得改变),这 n 个任务被分成若干批,每批包含相邻的若干任务。

从零时刻开始,这些任务被分批加工,第 i 个任务单独完成所需的时间为 ti​。在每批任务开始前,机器需要启动时间 s,而完成这批任务所需的时间是各个任务需要时间的总和(同一批任务将在同一时刻完成)。

每个任务的费用是它的完成时刻乘以一个费用系数 f i。请确定一个分组方案,使得总费用最小。

输入格式

第一行一个正整数 n。
第二行是一个整数 s。

下面 n 行每行有一对数,分别为 ti 和 fi,表示第 i 个任务单独完成所需的时间是 ti 及其费用系数 fi。

输出格式

一个数,最小的总费用。

输入输出样例

输入

5
1
1 3
3 2
4 3
2 3
1 4

输出

153

分析

dp[i]表示完成前i个任务所需的最小费用,用time[i]表示前i项任务所需的时间,用money[i]表示前i项任务一共的费用系数。

如果在完成第j项任务是启动一次机器,后面的所有任务完成的时刻都要加上s,所以每启动一次机器的费用为s * (money[n] - money[j- 1 ]);

如果把第j项任务和第i项任务和在一起做,则它们的完成时刻为time[i],所以费用为time[i] * (money[i] - money[j - 1])。

别把数组名设置成time会冲突

程序

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 0x3f3f3f3f;

int dp[100001];
int n , Time[100001] , money[100001] , s; int main ()
{
ios::sync_with_stdio(false);
cin >> n >> s;
for (int i = 1; i <= n; i++)
{
cin >> Time[i] >> money[i];
Time[i] += Time[i - 1];
money[i] += money[i - 1];
dp[i]=MAXN;
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
dp[i] = min(dp[i] , dp[j - 1] + s * (money[n] - money[j - 1]) + Time[i] * (money[i] - money[j - 1]));
cout << dp[n];
return 0;
}

最新文章

  1. 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案
  2. Java优化
  3. 【java】spring-data-jpa 集成hibernate实现多条件分页查询
  4. 【Ubuntu日常技巧】VirtualBox多网卡路由配置,保障虚拟机连接上外网
  5. python3爬虫再探之EXCEL(续)
  6. [FJSC2014]折线统计
  7. 【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考
  8. MyBatis起步
  9. Python数据分析中 DataFrame axis=0(0轴)与axis=1(1轴)的理解
  10. 402 CSS菜鸟:transform and transition
  11. Python之进度条及π的计算
  12. c/c++ 浅拷贝
  13. java算法----排序----(6)希尔排序(最小增量排序)
  14. centos6.7环境半虚拟化软件xen及xm配置工具使用详解
  15. hiho一下 第148周
  16. Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造
  17. 使用JSP的fmt标签实现国际化支持
  18. socke+epoll
  19. Dubbo 分布式服务框架
  20. 记开发个人图书收藏清单小程序开发(十)DB开发——新增图书信息

热门文章

  1. Win64 驱动内核编程-15.回调监控注册表
  2. WideCharToMultiByte 与 MultiByteToWideChar
  3. 【TensorFlow】Win7下使用Object Detection API 训练自己的数据集,并视频实时检测
  4. 使用TK框架中selectByPrimaryKey
  5. SQL必学必会笔记 —— 基础篇
  6. 用scanf_s判断输入数据是否合法
  7. 【BUAA软工】团队任务拆解
  8. 02、SpringBoot2入门
  9. CentOS7配置kdump
  10. Linux Test Project(一)