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[][];
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=;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);
sort(a+,a+n+);
for(int i=;i<=n;i++)sum[i]=sum[i-]+a[i].x;
memset(dp,/,sizeof(dp));
dp[][]=;
for(int i=;i<=n;i++){
for(int j=;j<=sum[i];j++){
if(j>=a[i].x)dp[i][j]=min(dp[i][j],max(dp[i-][j-a[i].x],j+a[i].y));
dp[i][j]=min(dp[i][j],max(dp[i-][j],sum[i]-j+a[i].y));
}
}
int ans=0x7fffffff;
for(int i=;i<=sum[n];i++)ans=min(ans,dp[n][i]);
cout<<ans;
}

洛谷P1654 产品排序(sort)的更多相关文章

  1. 洛谷 SP9722 CODESPTB - Insertion Sort

    洛谷 SP9722 CODESPTB - Insertion Sort 洛谷传送门 题目描述 Insertion Sort is a classical sorting technique. One ...

  2. [洛谷P2127] 序列排序

    洛谷题目链接:序列排序 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? ...

  3. [UVA1402]Robotic Sort;[SP2059]CERC07S - Robotic Sort([洛谷P3165][CQOI2014]排序机械臂;[洛谷P4402][Cerc2007]robotic sort 机械排序)

    题目大意:一串数字,使用如下方式排序: 先找到最小的数的位置$P_1$,将区间$[1,P_1]$反转,再找到第二小的数的位置$P_2$,将区间$[2,P_2]$反转,知道排序完成.输出每次操作的$P_ ...

  4. 洛谷P2127 序列排序 [贪心]

    题目传送门 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格 ...

  5. 洛谷——P1327 数列排序

    P1327 数列排序 题目描述 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 输入输出格式 输入格式: ...

  6. 洛谷 P2127 序列排序

    https://www.luogu.org/problemnew/show/P2127 感觉题解里写的比较复杂,可能自己的想法比较简单一点吧. 看这个图中的的点如果形成一个环,贪心的考虑,要想花费最少 ...

  7. 洛谷P3165 [CQOI2014]排序机械臂

    题目描述 为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂.它遵循一个简单的排序规则,第一次操作找到摄低的物品的位置P1,并把左起第一个至P1间的物品反序:第二次找到第二低的物品 ...

  8. 洛谷 P1327 数列排序

    P1327 数列排序 题目描述 给定一个数列{an},这个数列满足ai≠aj(i≠j),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换? 输入输出格式 输入格式: ...

  9. 洛谷 P1786 帮贡排序 题解

    P1786 帮贡排序 题目背景 在absi2011的帮派里,死号偏多.现在absi2011和帮主等人联合决定,要清除一些死号,加进一些新号,同时还要鼓励帮贡多的人,对帮派进行一番休整. 题目描述 目前 ...

随机推荐

  1. hadoop磁盘空间不均衡的解决办法

    hadoop集群在运行一段时间后,总是会出现某台机器的磁盘使用率特别高,有的使用率特别低,针对这种情况,hadoop提供了balancer工具调整磁盘负载 使用命令:start-balancer.sh ...

  2. mvn 创建的项目 导入到eclipse

    首先,我的工具版本如下: jdk: java version "1.6.0_10-rc2"; maven: apache-maven-3.1.0; eclipse: MyEclip ...

  3. BZOJ 1600 [Usaco2008 Oct]建造栅栏:dp【前缀和优化】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1600 题意: 给你一个长度为n的木板,让你把这个木板切割成四段(长度为整数),并且要求这四 ...

  4. animate旋转动画练习,css3形变练习

    <!DOCTYPE html> <!-- saved from url=(0048)http://yinjiazeng.github.io/test/dial/index.html ...

  5. HTML Document 头

    1. 比较宽松的HTML格式,样式 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> 如下 ...

  6. typedef 函数指针的用法

    转自:http://www.cnblogs.com/shenlian/archive/2011/05/21/2053149.html typedef 函数指针的用法 在网上搜索函数指针,看到一个例子. ...

  7. java面向对象的三大特性

    1.面向对象的三大特性 继承.封装.多态 什么是继承? ①继承是面向对象程序设计能够提高软件开发效率的重要原因之一. ②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷. ③继承来的属性 ...

  8. java 放射机制简介

    放射,说白了就是通过名字加载相应的类,以及类的方法和属性,是为了解决开发中不知道别人会写什么类而采取的一种顺利开发的东东. package com.io; //学生业务类 不知道别人写的 这个是别人写 ...

  9. 【机器学习】决策树C4.5、ID3

    一.算法流程 step1:计算信息熵 step2: 划分数据集 step3: 创建决策树 step4: 利用决策树分类 二.信息熵Entropy.信息增益Gain 重点:选择一个属性进行分支.注意信息 ...

  10. linux中syslog自定义存储路径的方法

    方法一: 1. su  //切换到root用户下2. cp /etc/sysconfig/rsyslog /etc/sysconfig/rsyslogbak //备份vim /etc/sysconfi ...