codevs 4888 零件分组

4888 零件分组

时间限制: 1 s

空间限制: 16000 KB

题目等级 : 黄金 Gold

题解

查看运行结果

题目描述 Description

现有一些棍状零件,每个零件都有一定的长度(Li)和重量(Wi)。现在为了加工需要,要将他们分成若干组,使每一组中的零件都能排成一个长度和重量都不下降(若i<j,则Li<=Lj,Wi<=Wj,其中i,j为在同一组中的序号)的序列。请问至少要分成几组?

输入描述 Input Description

第1行为一个整数n,表示棍状零件的总个数。

接下来n行每行有两个正整数,分别为一个零件的长度(Li)和重量(Wi)。

输出描述 Output Description

输出一个正整数,表示最小分成的组数

样例输入 Sample Input

5

8 4

3 8

9 7

2 3

3 5

样例输出 Sample Output

2

解释:

第一组

(2,3) (3,5) (3,8)

第二组

(8,4)(9,7)

数据范围及提示 Data Size & Hint

n<=1000

Wi<=10000

Li<=10000

分类标签 Tags 点此展开

发现sort是万能的,,,,,,,,

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=10001;
 7 struct node
 8 {
 9     int x;
10     int y;
11 }map[MAXN];
12 int now=0;
13 int comp(const node & a,const node & b)
14 {
15     if(a.x>b.x&&a.y>b.y)
16     return 1;
17     else
18     return 0;
19 }
20 int main()
21 {
22     int n;
23     scanf("%d",&n);
24     for(int i=1;i<=n;i++)
25     {
26         scanf("%d%d",&map[i].x,&map[i].y);
27     }
28     sort(map+1,map+n+1,comp);
29     int tot=1;
30     for(int i=1;i<=n;i++)
31     {
32         if(map[i].x<=map[i+1].x)
33         tot++;
34     }
35     printf("%d",tot);
36     return 0;
37 }
时间: 2024-10-22 20:42:29

codevs 4888 零件分组的相关文章

零件分组_DP

问题 C: 零件分组 时间限制: 1 Sec  内存限制: 64 MB提交: 31  解决: 14[提交][状态][讨论版] 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi).现在为了加工需要,要将它们分成若干组,使每一组的零件都能排成一个长度和重量都不下降(若 i<j,则 Li<=Lj,Wi<=Wj)的序列.请问至少要分成几组? 输入 第一行为一个整数 N(N<=1000),表示零件的个数.第二行有 N 对正整数,每对正整数表示这些零件的长度和重量,

【题解】零件分组

题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(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 题解 我们按

零件分组

数组开小点! 数组开小点! 数组开小点! 不然会MLE.想去打出题人,不知道地址.有的大佬用DP,蒟蒻只会用sort排一遍,然后去看是否满足要求.... 方程: dp[i]=max(dp[j]+1,dp[i]). 代码: #include<bits/stdc++.h> using namespace std; struct str { int l,r; }a[11000]; int n; int dp[11000]={0},ans; bool cmp(str x,str y) { if(x.l

k-means和iosdata聚类算法在生活案例中的运用

引言:聚类是将数据分成类或者簇的过程,从而使同簇的对象之间具有很高的相似度,而不同的簇的对象相似度则存在差异.聚类技术是一种迭代重定位技术,在我们的生活中也得到了广泛的运用,比如:零件分组.数据评价.数据分析等很多方面:具体的比如对市场分析人员而言,聚类可以帮助市场分析人员从消费者数据库中分出不同的消费群体来,并且可以分析出每一类消费者的消费习惯等,从而帮助市场人员对销售做出更好的决策. 所以,本篇博客主要是对生活中的案例,运用k-means算法和isodata聚类算法进行数据评价和分析.本文是

树形DP+(分组背包||二叉树,一般树,森林之间的转换)codevs 1378 选课

codevs 1378 选课 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修了这M门课并考核通过就能获得相应的学分. 在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修.例如<Frontpage>必须在

codevs 3152 装箱问题3

装箱问题3 http://codevs.cn/problem/3152/ 题目描述 Description 设有n种物品,记作A1.A2.-.An,对应于每个Ai(1<=i<=n)都有一个重量Awi和价值Avi(重量和价值都为正整数).另外,对应于每个Ai,都有一件可代替它的"代用品"Bi,Bi的重量和价值分别为Bwi和Bvi. 本题的任务是:选择这n件物品或其代用品的一个子集装进背包,使总重量不超过给定重量TOT,同时使总价值VAL最高.装填的第I步,要么装入Ai,要么装

CODEVS——T 2956 排队问题

http://codevs.cn/problem/2956/ 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有N个学生去食堂,可教官规定:必须2人或3人组成一组,求有多少种不同分组的方法. 输入描述 Input Description 一个数,N 输出描述 Output Description 一个数,即答案. 样例输入 Sample Input 6 样例输出 Sample Output 2 数据范围及提示 

C#开发微信门户及应用(5)--用户分组信息管理

在上个月的对C#开发微信门户及应用做了介绍,写过了几篇的随笔进行分享,由于时间关系,间隔了一段时间没有继续写这个系列的博客了,并不是对这个方面停止了研究,而是继续深入探索这方面的技术,为了更好的应用起来,专心做好底层的技术开发.本篇继续上一篇的介绍,主要介绍分组管理方面的开发应用,这篇的内容和上一篇,作为一个完整的用户信息和分组信息管理的组合. 1.用户分组管理内容 用户分组的引入,主要是方便管理关注者列表,以及方便向不同的组别发送消息的操作的,一个公众账号,最多支持创建500个分组. 用户分组

使用多级分组报表展现分类数据

当你走进便利店,你会发现所有的商品都是按类排放的,分类排放可以帮助您快速找到同类商品,也可以快速发现你想要的商品. 当去饭店吃饭的时候,菜单上的菜也是按类别排列的,比如凉菜,热菜,汤类,主食等.点菜时你会直接翻到你想要的那一类菜单,点菜. -- 通过上面场景,大家就理解分组呈现数据的好处了,分组可以帮助快速定位,方便数据查找,汇总,分析数据趋势等.有时候分析某一单一的商品并无价值,所以采用分组是最常见也是最简单的数据分析手段. 分组报表则是在报表中使用分组功能,是工作中最常用的报表类型,分组功能