P2093 零件分组【贪心算法练习题】
题目链接:
http://codevs.cn/problem/4888/
https://www.luogu.org/problem/show?pid=2093
题目描述
某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现在为了加工需要,要将它们分成若干组,使每一组的零件都能排成一个长度和重量都不下降(若i<j,则Li<=Lj,Wi<=Wj)的序列。请问至少要分成几组?
输入输出格式
输入格式:
第一行为一个整数N(N<=1000),表示零件的个数。第二行有N对正整数,每对正整数表示这些零件的长度和重量,长度和重量均不超过10000。
输出格式:
仅一行,即最少分成的组数。
输入输出样例
5 8 4 3 8 2 3 9 7 3 5
2
分析:
可以考虑先按长度从小到大排序,长度相等者按重量从小到大排序。
然后第一个零件单独一个组。
从第二个零件开始处理所有零件的分组:
若是第i个零件的重量比某个已经存在的组(假设为第j组)的最大重量还要大,则第i个零件可以归入第j组。
假如第i个零件无法归入任何一个组,则第i个零件单独形成一个新的组(第k组)。
有可能第i个零件可以归入多个组(假设为j1、j2、j3、……、jn),从最优的角度来考虑,应该选择组内最重零件较大的那一个组。
#include<iostream> #include<cstdio> using namespace std; ],b[]; void qsort(int l,int r) { int i,j,mid,p; i=l; j=r; mid=a[(l+r)/]; while (i<=j) { while (a[i]<mid) i++; while (a[j]>mid) j--; if (i<=j) { p=a[i]; a[i]=a[j]; a[j]=p; p=b[i]; b[i]=b[j]; b[j]=p; i++; j--; } } if (l<j) qsort(l,j); if (i<r) qsort(i,r); } int main() { freopen( "stick.in" , "r" ,stdin); freopen( "stick.out" , "w" ,stdout); ]; cin>>n; ;i<=n;i++) { cin>>a[i]>>b[i]; a[i]=a[i]*+b[i]; } qsort(,n); k=; c[]=b[]; ;i<=n;i++) { x=; ;j<=k;j++) if (c[j]<=b[i]) { ) x=j; else if (c[j]>c[x]) x=j; } ) c[++k]=b[i]; else c[x]=b[i]; } cout<<k<<endl; ; }
P2093 零件分组【贪心算法练习题】的更多相关文章
- 洛谷——P2093 零件分组
https://www.luogu.org/problem/show?pid=2093 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi).现在为了加工需要,要将它们分成若 ...
- 拦截导弹类问题 (Codevs4888零件分组POJ1065Wooden Sticks)(LIS及其覆盖问题)
拦截导弹 题意:求最长不上升子序列长度:求一个序列最少分成几个非增子序. 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1& ...
- 贪心算法(Greedy Algorithm)
参考: 五大常用算法之三:贪心算法 算法系列:贪心算法 贪心算法详解 从零开始学贪心算法 一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以 ...
- 算法导论----贪心算法,删除k个数,使剩下的数字最小
先贴问题: 1个n位正整数a,删去其中的k位,得到一个新的正整数b,设计一个贪心算法,对给定的a和k得到最小的b: 一.我的想法:先看例子:a=5476579228:去掉4位,则位数n=10,k=4, ...
- 零件分组_DP
问题 C: 零件分组 时间限制: 1 Sec 内存限制: 64 MB提交: 31 解决: 14[提交][状态][讨论版] 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(W ...
- LEETCODE —— Best Time to Buy and Sell Stock II [贪心算法]
Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...
- ACM_ICPC hdu-2111(简单贪心算法)
一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #inclu ...
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- 增强学习贪心算法与Softmax算法
(一) 这个算法是基于一个概率来对探索和利用进行折中:每次尝试时,以概率进行探索,即以均匀概率随机选取一个摇臂,以的概率进行利用,即以这个概率选择当前平均奖赏最高的摇臂(如有多个,则随机选取). 其中 ...
随机推荐
- protobuf语法简介2
protobuf语法简介2 1.optional的字段和默认值 如上所述,消息描述中的一个元素可以被标记为"可选的"(optional).一个格式良好的消息可以包含0个或一个opt ...
- ProDinner
ylbtech-dbs:ProDinner A, 数据库关系图 返回顶部 4, 点餐关系图 3, 留言图 1, 用户角色关系图 0, B,SQL脚本返回顶部 2, use master go --ki ...
- Oracle简单的备份和恢复-导出和导入(2)
ylbtech-Oracle:Oracle简单的备份和恢复-导出和导入(2) 简单的备份和恢复-导出和导入(2) 1. 用户导入导出文件中的一张表(emp)返回顶部 0.1, 我们在sql plus中 ...
- go语言之进阶篇JSON处理
一.JSON处理 JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成.尽管JSON是JavaScr ...
- 魅族推送 简介 集成 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 基于Bootstrap+jQuery.validate Form表单验证实践
基于Bootstrap jQuery.validate Form表单验证实践 项目结构 : github 上源码地址:https://github.com/starzou/front-end- ...
- 使用TensorFlow动手实现一个Char-RNN
https://blog.csdn.net/thriving_fcl/article/details/72565455 前言 学习RNN的时候很多人应该都有看过Andrej Karpathy写的The ...
- 性能测试vs负载测试vs压力测试
下面我们主要介绍性能测试.负载测试和压力测试. 效率作为ISO 9126内部和外部质量的重要质量属性之一,其含义是在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力.资源可能包括其他软 ...
- PHP文件操作[总结]
1.前言 工作中涉及到数据处理,后台需要用到PHP处理数据,之前没有接触过PHP,借此机会了解了一下PHP,PHP很方便,很灵活,编码很舒服,很喜欢用PHP处理后台数据.今天总结一下php文件操作,主 ...
- 如何在编辑器里添加CSS或JS代码
//编辑器里代码模式下的代码 <scripttype="text/javascript"> //my code.... </script> //编辑器里可视 ...