zoukankan      html  css  js  c++  java
  • 洛谷 P2365 任务安排【dp】

    其实是可以斜率优化的但是没啥必要
    设st为花费时间的前缀和,sf为Fi的前缀和,f[i]为分组到i的最小花费
    然后枚举j转移,考虑每次转移都是把j到i分为一组这样意味着j及之后的都要增加s的时间,同时增加这段的结束时间/*F,取min即可

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int N=5005,inf=1e9;
    int n,s,st[N],sf[N],f[N];
    int read()
    {
    	int r=0,f=1;
    	char p=getchar();
    	while(p>'9'||p<'0')
    	{
    		if(p=='-')
    			f=-1;
    		p=getchar();
    	}
    	while(p>='0'&&p<='9')
    	{
    		r=r*10+p-48;
    		p=getchar();
    	}
    	return r*f;
    }
    int main()
    {
    	n=read(),s=read();
    	for(int i=1;i<=n;i++)
    		st[i]=st[i-1]+read(),sf[i]=sf[i-1]+read();
    	for(int i=1;i<=n;i++)
    		f[i]=inf;
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=i;j++)
    			f[i]=min(f[i],f[j-1]+s*(sf[n]-sf[j-1])+st[i]*(sf[i]-sf[j-1]));
    	printf("%d
    ",f[n]);
    	return 0;
    }
    
  • 相关阅读:
    启动docker
    hadoop hdfs文件操作
    html_day02
    启动hadoop和关闭hadoop
    ubuntu 启动idea
    html_day01_practice
    day01
    构造函数后加冒号及调用顺序
    三大范式
    mysql解决迁移复制数据库报错 Key或column 过长
  • 原文地址:https://www.cnblogs.com/lokiii/p/9088538.html
Copyright © 2011-2022 走看看