`
暴风雪
  • 浏览: 389220 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[DP]zoj 3331:Process the Tasks

阅读更多

大致题意:
    有两个机器a,b。要处理n个部件,第i个部件在机器a上完成需要atime[i],在b机器上需要btime[i],每个部件只能选择一个机器来完成。且当地i个部件开始加工时前[1,i-1]部件必须已经完成或者正在被加工。求加工完所有n个部件的最小时间是多少。

 

大致思路:
    好神的dp,开始时乱想了几个状态都觉得不靠谱,膜拜了众犇的博客才明白怎么做,大神敬请bs。这里的状态表示非常奇怪。dp[i][j]代表的是,当加工到第i个部件,a机器比b机器的时间多出j+100时的最少时间是多少。

    转移的时候就分别考虑当前任务放在a上或放在b上的最少时间分别是多少即可。

 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int inf=1<<28;
int dp[150][203];
int atime[150],btime[150];
int main()
{
    int cas,i,j,n,m,ha,hb,ans;
    cin>>cas;
    while(cas--)
    {
        cin>>n;
        for(i=1;i<=n;i++)
        {
            cin>>atime[i]>>btime[i];
        }
        for(i=0;i<=n;i++)
        {
            for(j=0;j<202;j++)
            {
                dp[i][j]=inf;
            }
        }
        dp[0][100]=0;
        for(i=1;i<=n;i++)
        {
            for(j=0;j<=200;j++)
            {
                if(dp[i-1][j]==inf)continue;
                if(j<100)
                {
                    ha=dp[i-1][j]-(100-j);
                    hb=dp[i-1][j];
                }
                else
                {
                    ha=dp[i-1][j];
                    hb=dp[i-1][j]-(j-100);
                }
                if(j<100)
                {
                    dp[i][ha+atime[i]-hb+100]=min(dp[i][ha+atime[i]-hb+100],max(dp[i-1][j],ha+atime[i]));
                    dp[i][100-btime[i]]=min(dp[i][100-btime[i]],dp[i-1][j]+btime[i]);
                }
                else
                {
                    dp[i][ha-hb-btime[i]+100]=min(dp[i][ha-hb-btime[i]+100],max(dp[i-1][j],hb+btime[i]));
                    dp[i][100+atime[i]]=min(dp[i][100+atime[i]],dp[i-1][j]+atime[i]);
                }
            }
        }
        ans=inf;
        for(i=0;i<=200;i++)
        {
            ans=min(ans,dp[n][i]);
        }
        cout<<ans<<endl;
    }
    return 0;
}
 
0
0
分享到:
评论

相关推荐

    ZOJ:浙江大学程序在线评测系统.docx

    ZOJ,全称“浙江大学程序在线评测系统”(Zhejiang University Online Judge),是一个提供信息学(算法竞赛)题库及程序评测的网站。以下是关于ZOJ的详细介绍: 一、基本信息 名称:浙江大学程序在线评测系统(ZOJ)...

    zoj 1002_zoj1002_

    【标题】"ZOJ 1002" 是一个在线编程竞赛题目,源自ZOJ(Zhejiang Online Judge),这是一个面向ACM/ICPC(国际大学生程序设计竞赛)的在线评测系统。题目编号1002,通常表示该题是ZOJ平台上的一个问题,可能涉及算法...

    zoj 源码700题

    【标题】"zoj 源码700题"是指一个包含700多道ZOJ(在线判题系统Zhejiang Online Judge)编程竞赛题目的源代码集合。这个资源对于学习算法、提高编程技能以及准备编程竞赛的学员来说极具价值。 【描述】"包含了zoj...

    zoj 1610 Count the Colors.md

    zoj 1610 Count the Colors.md

    ZOJ1003 Crashing Balloon

    【ZOJ1003 Crashing Balloon】这个问题是一个经典的计算机科学竞赛编程题目,主要涉及动态规划(Dynamic Programming, DP)和贪心算法(Greedy Algorithm)的知识点。在这个问题中,参赛者需要编写程序来模拟气球...

    zoj 1255 The Path.md

    zoj 1255 The Path.md

    ZOJ月赛 题解 (ZOJ Monthly, August 2014)

    **ZOJ月赛题解 (ZOJ Monthly, August 2014)** ZOJ(Zhejiang Online Judge)是中国著名的在线编程竞赛平台之一,它为程序员和学生提供了丰富的算法练习和比赛机会。2014年8月的ZOJ月赛是一场面向广大编程爱好者的...

    zoj1027解题指南

    【标题】"ZOJ1027解题指南"是一个针对特定编程竞赛题目——ZOJ1027的解决方案集合。ZOJ,全称为“Zhejiang Online Judge”,是浙江大学主办的一个在线编程竞赛平台,提供了丰富的算法题目供参赛者练习和挑战。本解题...

    zoj 1810 The Gourmet Club.md

    zoj 1810 The Gourmet Club.md

    zoj 2151 The Highest Profits.md

    zoj 2151 The Highest Profits.md

    zoj 2499 The Happy Worm.md

    zoj 2499 The Happy Worm.md

    zoj 700源代码

    ZOJ,全称为Zhejiang Online Judge,是一个知名的在线编程竞赛平台,主要服务于浙江大学和国内其他高校的学生,提供丰富的算法题目供参赛者练习和比赛。这个压缩包文件名为"ZOJ 700多题源代码",意味着它包含了解决...

    zoj代码集合

    【ZOJ代码集合】是一个专为ACM(国际大学生程序设计竞赛)爱好者准备的资源库,其中包含了丰富的算法实现和编程技巧。这个压缩包文件名“ZOJ入门与提高代码集”暗示了它旨在帮助初学者逐步提升编程能力,同时也为有...

    zoj 题库 详细解答 解题代码

    zoj 题库 详细解答 解题代码 该资源主要涵盖了 zoj 题库中的各种编程题目,涵盖了基本算法、数据结构、数学运算等多个方面的知识点。下面是对该资源中出现的知识点的详细解释: 1. 第一次 ACM 总结(7th ACM) 该...

    Problem Arrangement zoj 3777

    Problem Arrangement zoj 3777

    浙江大学ZOJ题目分类

    浙江大学ZOJ(Zhejiang University Online Judge)是一个在线编程练习平台,主要服务于计算机科学和技术的学习者,特别是对算法和编程有浓厚兴趣的学生。这个平台提供了大量的编程题目,涵盖了各种难度和主题,帮助...

    zoj.rar_zoj_zoj4041

    《ZOJ 4041问题的正确解法与程序分析》 ZOJ(Zhejiang Online Judge)是一个知名的在线编程竞赛平台,其中的题目编号为4041的题目吸引了众多程序员的关注。本篇文章将深入探讨ZOJ 4041的正确解法,并对提供的源代码...

    ZOJ题解集合-截至2835

    ZOJ(Zhejiang Online Judge)是一个著名的在线编程竞赛平台,尤其在ACM(国际大学生程序设计竞赛)领域中有着广泛的影响力。这个“ZOJ题解集合-截至2835”显然是一份包含了大量ZOJ题目解决方案的压缩包,其中涵盖了...

    ZOJ题目答案源码

    ZOJ(Zhejiang Online Judge)是一个著名的在线编程竞赛平台,主要面向计算机科学与信息技术的学生和爱好者,提供了大量的算法题目供参赛者练习和提交代码。"ZOJ题目答案源码"是一个压缩包文件,其中包含了700多道...

Global site tag (gtag.js) - Google Analytics