题目链接>>>

转载于:https://www.cnblogs.com/Action-/archive/2012/07/03/2574800.html

 题目大意:

给n根木棍的长度和重量。根据要求求出制作木棍的最短时间。建立第一个木棍需要1分钟,若是接着要制作的木棍重量和长度都比此木棍长就不需要建立的时间,若是没有,则再需要建立时间。求时间最小为多少。

解题思路:

对木棍的长度和重量进行排序,以长度为首要考虑。排序完后的不一定都是下一根木棍重量和长度都大于前一根的。于是,我们对排序后的数组进行多次扫描,将可以在一次建立时间内完成的进行标记,知道木棍全部标记(设置一个外部变量来计数已扫描的元素的数量)。

例子:

5

4 9  5 2 2 1  3 5  1 4

排序完后:

1 4  2 1 3 5 4 9 5 2

然后进行第一次扫描:使用mark[]数组进行标记,mark[]初始化为0,红色为第一次描过的。

Stiks: (1 4)  (2 1)  (3 5)  (4 9)  (5 2)

Mark:   1       0      1       1      0

这是的setuptime为建立第一根木棍所要的时间,即1,此时扫描计数为3

接着进行第二次扫描,蓝色为第二次扫描过的结果。

Stiks: (1 4)  (2 1)  (3 5)  (4 9)  (5 2)

Mark:   1       0       1       1       0

这是的setuptime为1,此时扫描计数为5

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;struct stick
{int l;int w;
}s[5000];bool cmp(stick a,stick b)
{if(a.l<b.l)return true;else if(a.l>b.l)return false;elsereturn a.w<b.w;
}int main()
{int t,n,minute,ti,number;int mark[5000];cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++)cin>>s[i].l>>s[i].w;sort(s,s+n,cmp);memset(mark,0,sizeof(mark));number=0;minute=0;int pl;while(number!=n){for(int i=0;i<n;i++)if(!mark[i]){pl=i;minute++;break;}for(int i=0;i<n;i++){if(!mark[i]&&s[i].l>=s[pl].l&&s[i].w>=s[pl].w){mark[i]=1;number++;pl=i;}}}cout<<minute<<endl;}return 0;
}

2018-04-25

转载于:https://www.cnblogs.com/00isok/p/8944878.html

HDU 1051 Wooden Sticks 造木棍【贪心】相关推荐

  1. HDU - 1051 Wooden Sticks

    有一堆n个木棍.每个棒的长度和重量是预先知道的.木棒要用木工机械逐一加工.它需要一些时间,称为设置时间,机器准备加工一根棍子.安装时间与清洗操作和更换机器中的工具和形状有关.木工机床的安装时间如下: ...

  2. 1270: Wooden Sticks [贪心]

    点击打开链接 1270: Wooden Sticks [贪心] 时间限制: 1 Sec 内存限制: 128 MB 提交: 31 解决: 11 统计 题目描述 Lialosiu要制作木棍,给n根作为原料 ...

  3. Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)

    题意: 给你n个木棍的长度和重量,让其成为上升序列,如果不能达到,就需要重新一分钟设置. a)第一个木棍的准备时间为1分钟. b)在处理长度为l和重量为w的棒之后,如果l <= l'并且w &l ...

  4. HDU-1051 Wooden Sticks

    Wooden Sticks       Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. 题解 Sticks 小木棍

    题解 Sticks 小木棍 题目描述: 每组数据给出N根小木棍,把它们拼接成若干根长度相等的木棍,求该长度的最小值. 题解: 该题就是dfs深搜+剪枝 ```cpp #include<iostr ...

  6. ZOJ 1025 Wooden Sticks(快排+贪心)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 题目大意:机器运送n个木条,每个木条有一个长度和重量.运送第一根木 ...

  7. hdu1051 Wooden Sticks

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1051 大意:求最少升序序列的个数. #include <cstdio> #include &l ...

  8. 题解报告:hdu 1257 最少拦截系统(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是 ...

  9. HDU - 6955 Xor sum tire树 + 贪心

    传送门 文章目录 题意: 思路: 题意: 给你一个数列aaa,你需要找出来一个长度最小且左端点最靠前的区间,使其异或和≥k\ge k≥k. n≤1e5,0≤ai,k<230n\le1e5,0\l ...

最新文章

  1. Pycharm中Python3连接Oracle
  2. Ubuntu20.04更换为国内源
  3. 玩转oracle 11g(7):导出导入数据库
  4. [ARM] [基础][编译]ARM的浮点功能历史分类和对应的编译选项
  5. 页面无任何操作30秒后退出1
  6. 其他测试用例设计方法-错误推测法与正交实验法
  7. FZU 1924——死锁——————【topo判环】
  8. CF1096F Inversion Expectation
  9. scala中内部函数的使用
  10. rapidxml往xml文件循环写入内容
  11. vs2015安装+下载详细教程
  12. python能做什么有趣的东西-Python 里itchat 模块能实现什么有趣的东西?
  13. 0712-插曲-对拍
  14. 赛博朋克!灵感来自枫树种子荚的多翼滑翔机,空中可分体
  15. 产品经理的六大工作职责——最简洁
  16. 从面向对象设计思想出发理解Spring AOP编程
  17. [2020 年百度之星·程序设计大赛 - 复赛] Binary Addition
  18. 你投的简历提示不合适,建议参考STAR法则
  19. SpringCloud 整合 Seata
  20. 机械学习十大经典算法

热门文章

  1. 操作animate.css的一些小技巧
  2. IP地址更改小工具(bat命令)
  3. 深度学习的工作原理学习方式
  4. 【APIO2016】烟火表演
  5. Redis不同数据类型的查询命令语句
  6. 第九章 使用结构体类型处理组合数据——用户自定义数据类型
  7. java随机生成随机数
  8. scrapy学习笔记(三)-关于动态加载网页的爬取(序)
  9. OpenCV之阈值化操作总结
  10. 如何在WINDOWS下使用ZIP命令