Cogs 376. [IOI2002]任务安排(后效性DP)

  1. [IOI2002]任务安排
    ★☆ 输入文件:batch.in 输出文件:batch.out 简单对比
    时间限制:1 s 内存限制:128 MB
    N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务。从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti。在每批任务开始前,机器需要启动时间S,而完成这批任务所需的时间是各个任务需要时间的总和(同一批任务将在同一时刻完成)。每个任务的费用是它的完成时刻乘以一个费用系数Fi。请确定一个分组方案,使得总费用最小。
    例如:S=1;T={1,3,4,2,1};F={3,2,3,3,4}。如果分组方案是{1,2}、{3}、{4,5},则完成时间分别为{5,5,10,14,14},费用C={15,10,30,42,56},总费用就是153。
    输入
    第一行是N(1<=N<=5000)。
    第二行是S(0<=S<=50)。
    下面N行每行有一对数,分别为Ti和Fi,均为不大于100的正整数,表示第i个任务单独完成所需的时间是Ti及其费用系数Fi。
    输出
    一个数,最小的总费用。
    输入样例
    5
    1
    1 3
    3 2
    4 3
    2 3
    1 4
    输出样例
    153
/*
DP. 
n^2做法.
这题没想出来.
正解要考虑后效性. 
因为当我们选择一个任务作为开始的时候
它必然会对后面的决策产生影响.
所以我们先把后效性的贡献算出来累加进去.
方程长这样
f[i]=min(f[i],f[j-1]+(sumw[i]-sumw[j-1])*sumt[i]+S*(sumw[n]-sumw[j-1])) 
sumw表示前缀F[i],sumt表示前缀t[i].
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 5010
using namespace std;
int n,S,F[MAXN],f[MAXN],sumt[MAXN],sumw[MAXN];
int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();return x*f;
}
void slove()
{for(int i=1;i<=n;i++) f[i]=1e9;f[0]=0;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++)f[i]=min(f[i],f[j-1]+(sumw[i]-sumw[j-1])*sumt[i]+S*(sumw[n]-sumw[j-1]));}printf("%d",f[n]);
}
int main()
{freopen("batch.in","r",stdin);freopen("batch.out","w",stdout);int x;n=read(),S=read();for(int i=1;i<=n;i++){x=read(),F[i]=read();sumt[i]=sumt[i-1]+x;sumw[i]=sumw[i-1]+F[i];}slove();return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/10068029.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax.actionlink使用问题

突然发现ajax.actionlink调用的方法全是GET方式的&#xff0c;就算制定了POST也不行&#xff0c;Confirm窗口也弹不出来。。。直接StackOverFlow搜索 ajax.actionlink post not work, 出来一堆结果&#xff0c;有的是因为路由参数不对&#xff0c;有的是回调方法不对&#xff…

JAVA Stack栈和Heap堆的区别(转)

首先分清楚Stack&#xff0c;Heap的中文翻译&#xff1a;Stack—栈&#xff0c;Heap—堆。在中文里&#xff0c;Stack可以翻译为“堆栈”&#xff0c;所以我直接查找了计算机术语里面堆和栈开头的词语&#xff1a;堆存储&#xff1a; heapstorage 堆存储分配&#xff1a; he…

CSDN Markdown编辑器编辑教程

目录快捷键文字样式设置&#xff08;字体, 大小, 颜色, 高亮底色&#xff09;内嵌HTML表格定义列表代码块脚注数学公式UML 图:离线写博客常见颜色[TOC](目录)快捷键 - 加粗 Ctrl B - 斜体 Ctrl I - 引用 Ctrl Q- 插入链接 Ctrl L- 插入代码 Ctrl K- 插入图…

一个奇怪的EL表达式错误

下图是在Struts2的action中写的一个方法 JSP页面代码如下&#xff1a; 在页面访问如下路径&#xff1a;http://localhost:8088/maven_ssh/cust_getCustList 目前推测原因是存到session中的对象键值"custList"和action中方法名getCustList冲突了&#xff1f; 各位怎么…

Ruby 数组

city["北京","上海","天津","重庆"]puts citycityArray.newcity[0]"北京"city[1]"上海"city[2]"天津"city[3]"重庆"puts city city["北京","上海","天津",&qu…

(转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件

public static void fileChannelCopy(File s, File t) {FileInputStream fi null;FileOutputStream fo null;FileChannel in null;FileChannel out null;try {fi new FileInputStream(s);fo new FileOutputStream(t);in fi.getChannel();// 得到对应的文件通道out fo.g…

Mysql中的in和find_in_set的区别?

在mysql中in的使用情况如下&#xff1a; select * from article where 列名 in(值1&#xff0c;值2&#xff0c;值3.....)&#xff1b; select * from article where 值1 in(值1&#xff0c;值2&#xff0c;值3.....)&#xff1b; 在mysql中find_in_set的使用情况如下&#xff…

Vue组件强制刷新(重新渲染)的四种方案对比

文章目录前言一、刷新整个页面二、使用v-if标记三、forceUpdate四、key-changing五、应用场景vue具有缓存的页面的强制刷新进入页面输入框自动聚焦前言 Vue的双向绑定属于自动档&#xff1b;在特定的情况下&#xff0c;需要手动触发“刷新”操作&#xff0c;目前有四种方案可以…

AOJ 0525 Osenbei【穷竭搜索】

AOJ 0525 题意&#xff1a; 有一个烤饼器可以烤r行c列的煎饼&#xff0c;煎饼可以正面朝上&#xff08;用1表示&#xff09;也可以背面朝上&#xff08;用0表示&#xff09;。一次可将同一行或同一列的煎饼全部翻转。现在需要把尽可能多的煎饼翻成正面朝上&#xff0c;问最多能…

wp imei

由于WP8SKD不提供获取机子IMEI的方法&#xff0c;所以无法得到机子IMEI&#xff0c;但是SDK提供一另一个获取唯一ID的方法&#xff0c;在Microsoft.Phone.Info.DeviceExtendedProperties里面的DeviceUniqueId。 通过这个方法可以获得. 参考 wp8sdk有关DeviceExtendedProperties…

css-如何对每行中最后一个元素删除边距?

文章目录前言一、负边距一、nth-child()系列)前言 如何从最后一列的每个元素中删除边距&#xff1f; 在元素宽度不确定的情况下&#xff0c;或者如果屏幕很小或用户调整浏览器大小&#xff0c;则每行排列的个数就不确定 因此&#xff0c;在任何情况下&#xff0c;最后一列中出…

Cntlm安装和配置心得

2019独角兽企业重金招聘Python工程师标准>>> 对于那些使用NTLM进行身份验证的网络代理环境&#xff08;即设置上除需要代理主机和端口之外还需要提供域用户和密码&#xff09;来说&#xff0c;通过代理上网是一件头痛的事情&#xff0c;这主要是因为很多软件不支持N…

vim插件之cscope的安装与配置

本文参考自&#xff1a; http://easwy.com/blog/archives/advanced-vim-skills-cscope/ http://blog.csdn.net/dengxiayehu/article/details/6330200 http://blog.csdn.net/daofengdeba/article/details/7606616 插件介绍&#xff1a; cscope是用来查看源代码的工具&#xff0c…

字符串编辑距离(转载)

Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离)&#xff0c;它用来表示2个字符串的相似度&#xff0c;LD定义为需要最少多少步基本操作才能让2个字符串相等&#xff0c;基本操作包含3个&#xff1a;插入, 删除, 替换&#xff1b;比如&#xff0c;kiteen和…

css媒体查询(手机、平板、PC)

List item css媒体查询PC端按屏幕尺寸整理? 通过上面的电脑屏蔽及尺寸的例表上我们得到了几个宽度 1024 1280 1366 1440 1680 1920 超小屏幕 手机 (<768px) 小屏幕 平板 (≥768px) 中等屏幕 桌面显示器(≥992px) 大屏幕 大桌面显示器 (≥1200px) /* 超小屏幕&#xff08…

C/C++面试题(一)

1、局部变量能否和全局变量重名&#xff1f;答&#xff1a;能&#xff0c;局部会屏蔽全局。局部变量可以与全局变量同名&#xff0c;在函数内引用这个变量时&#xff0c;会用到同名的局部变量&#xff0c;而不会用到全局变量。对于有些编译器而言&#xff0c;在同一个函数内可以…

读书摘录(二)

人们只能听到自己喜欢听的&#xff0c;只能看到自己喜欢看的。博弈论中的一个关键教训&#xff1a;你需要了解对方的想法。你需要考虑他们知道些什么&#xff0c;是什么在激励着他们&#xff0c;甚至他们是怎么看你的。无论你多努力&#xff0c;你都很有可能完全没有机会做到富…

hbase配置详解(转)

转自&#xff1a;http://www.cnblogs.com/viviman/archive/2013/03/21/2973539.html 1 准备工作 因为我只有一台机器&#xff0c;所以&#xff0c;一切都成为了伪分布&#xff0c;但是&#xff0c;其实和集群是一样的啦。 在hbase配置之前&#xff0c;先确定自己的linux上有两个…

js rem 单位适配(手机、平板、PC)?

js rem单位适配<script type"text/javascript">// 设备区分 &#xff08;安卓、火狐、平板、PC&#xff09;var os function() {var ua navigator.userAgent,isAndroid /(?:Android)/.test(ua),isFireFox /(?:Firefox)/.test(ua),isTablet /(?:iPad|Pl…

hdu 4160 Dolls (最大独立)

点击打开链接 需要排下序。。 #include"stdio.h" #include"string.h" #include"stdlib.h" #define N 501 struct node {int a,b,c; }aa[N]; int map[N][N],v[N],link[N]; int n; int cmp(const void*a,const void*b) {struct node *c,*d;c(struc…