zoukankan      html  css  js  c++  java
  • 洛谷P1654 产品排序(sort)

    P1654 产品排序(sort)

    题目描述

    有一系列产品,给定每个产品的加工时间和冷却成型时间(冷却过程产品之间没有关系,是单独冷却的)。现在你手上有两台机器可以用来加工,你需要安排产品加工的顺序以及去哪台机器加工,使得所有产品都成型的时间最早。机器之间互不相关,可以同时进行工作,一个机器一个时刻只能加工一个产品。

    输入输出格式

    输入格式:

    第一行一个数n,表示产品个数,以下n行,每行两个数分别表示产品加工的时间A[i]和冷却时间B[i]。

    【数据规模】

    对于20%的数据,满足n≤6;

    对于100%的数据,满足n,A[i],B[i]≤200。

    输出格式:

    一个数表示所有产品成型的最早时间。

    输入输出样例

    输入样例#1:
    3
    1 4
    3 3
    4 1
    输出样例#1:
    6
    /*
        先贪心:按B从大到小排序 
        再DP:设f[i][j]为前i个产品,A机器用时间j完成生产的最短时间,则有: 
        f[i][j]=max(f[i-1][j-A[i]],j+B[i]);—给A机器生产 
        f[i][j]=max(f[i-1][j],sum[i]-j+B[i]);—给B机器生产 
        sum为排序后A[i]前缀和。 
        上面俩取个min即可,注意下标越界,判一下即可。
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define maxn 210
    int n,ans;
    bool vis[maxn];
    int sum[maxn],dp[210][40010];
    struct node{
        int x,y;
        bool operator < (const node b)const{
            if(y!=b.y)return y>b.y;
        }
    }a[maxn];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i].x;
        memset(dp,127/3,sizeof(dp));
        dp[0][0]=0;
        for(int i=1;i<=n;i++){
            for(int j=0;j<=sum[i];j++){
                if(j>=a[i].x)dp[i][j]=min(dp[i][j],max(dp[i-1][j-a[i].x],j+a[i].y));
                dp[i][j]=min(dp[i][j],max(dp[i-1][j],sum[i]-j+a[i].y));
            }
        }
        int ans=0x7fffffff;
        for(int i=0;i<=sum[n];i++)ans=min(ans,dp[n][i]);
        cout<<ans;
    }
  • 相关阅读:
    Git工具提交github.com
    小程序-setData方法使用--改变默认数据data初始值方法
    小程序-全局变量
    小程序--获取openid
    小程序--错误{"errcode":40125,"errmsg":"invalid appsecret, view more at http://t.cn/RAEkdVq, hints: [ req_id: lE8J30972ns32 ]"}
    小程序-获取openid
    微信小程序--简易table表格
    微信小程序--简单页面跳转
    小程序禁止下拉更新
    小程序--登录获取code
  • 原文地址:https://www.cnblogs.com/thmyl/p/7498492.html
Copyright © 2011-2022 走看看