题目链接:

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。

输出格式:

仅一行,即最少分成的组数。

输入输出样例

输入样例#1:

5
8 4 3 8 2 3 9 7 3 5
输出样例#1:

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 零件分组【贪心算法练习题】的更多相关文章

  1. 洛谷——P2093 零件分组

    https://www.luogu.org/problem/show?pid=2093 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi).现在为了加工需要,要将它们分成若 ...

  2. 拦截导弹类问题 (Codevs4888零件分组POJ1065Wooden Sticks)(LIS及其覆盖问题)

    拦截导弹 题意:求最长不上升子序列长度:求一个序列最少分成几个非增子序. 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1& ...

  3. 贪心算法(Greedy Algorithm)

    参考: 五大常用算法之三:贪心算法 算法系列:贪心算法 贪心算法详解 从零开始学贪心算法 一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以 ...

  4. 算法导论----贪心算法,删除k个数,使剩下的数字最小

    先贴问题: 1个n位正整数a,删去其中的k位,得到一个新的正整数b,设计一个贪心算法,对给定的a和k得到最小的b: 一.我的想法:先看例子:a=5476579228:去掉4位,则位数n=10,k=4, ...

  5. 零件分组_DP

    问题 C: 零件分组 时间限制: 1 Sec  内存限制: 64 MB提交: 31  解决: 14[提交][状态][讨论版] 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(W ...

  6. 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 ...

  7. ACM_ICPC hdu-2111(简单贪心算法)

    一道非常简单的贪心算法,但是要注意输入的价值是单位体积的价值,并不是这个物品的总价值!#include <iostream> #include <stdio.h> #inclu ...

  8. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题

    1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...

  9. 增强学习贪心算法与Softmax算法

    (一) 这个算法是基于一个概率来对探索和利用进行折中:每次尝试时,以概率进行探索,即以均匀概率随机选取一个摇臂,以的概率进行利用,即以这个概率选择当前平均奖赏最高的摇臂(如有多个,则随机选取). 其中 ...

随机推荐

  1. [转]CENTOS LINUX安装并使用NFS共享文件

    FROM :http://www.qiansw.com/centos-linux-nfs.html NFS是linux常用的一种文件分享工具. 下面介绍安装及使用方法. CentOS 5.5 yum ...

  2. jQuery 发送验证码倒计时按钮

    { wait:90, hsTime:function(that){ if (this.wait == 0) { $('#hsbtn').removeAttr("disabled") ...

  3. Python3爬虫:利用Fidder抓取手机APP的数据

    1.什么是Fiddler? Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,ht ...

  4. python3 验证码图片切割

    切割前图片 切割后四个图片 代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy impor ...

  5. Android -- DecorView

    DecorView 开发中,通常都是在onCreate()中调用setContentView(R.layout.custom_layout)来实现想要的页面布局.页面都是依附在窗口之上的,而Decor ...

  6. C指针原理(14)

    tcc源码分析 本博客所有内容是原创,如果转载请注明来源 http://blog.csdn.net/myhaspl/ tcctok.h定义了C语言的词法分析的基本元素,主要定义了关键字. /* key ...

  7. MySQL数据复制到其他主机时报错

    问题1: MySQL server has gone away With statement 原因:SQl insert 插入的语句天长导致 问题2:mysql a bulk size specifi ...

  8. retrofit+RXjava二次封装

    接入说明:项目中已集成RXjava,RXandroid.Retrofit,为避免包冲突,不须要再次接入. 就可以直接使用RXjava,Retrofit的所有api. github地址:https:// ...

  9. 如何获取当前应用程序所用的OpenGL ES的版本

      如何获取当前应用程序所用的OpenGL ES的版本? [答案]     char* glVersion = (char*)glGetString(GL_VERSION);     LOGW(&qu ...

  10. ElasticSearch无法启动

    安装了ElasticSearch5.5.1后,每次启动服务的时候,都是启动了一下就自动停止了.查看了一下EventViewer, 错误信息如下: Application: elasticsearch. ...