HDU 1051 Wooden Sticks 造木棍【贪心】
题目链接>>>
转载于: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 造木棍【贪心】相关推荐
- HDU - 1051 Wooden Sticks
有一堆n个木棍.每个棒的长度和重量是预先知道的.木棒要用木工机械逐一加工.它需要一些时间,称为设置时间,机器准备加工一根棍子.安装时间与清洗操作和更换机器中的工具和形状有关.木工机床的安装时间如下: ...
- 1270: Wooden Sticks [贪心]
点击打开链接 1270: Wooden Sticks [贪心] 时间限制: 1 Sec 内存限制: 128 MB 提交: 31 解决: 11 统计 题目描述 Lialosiu要制作木棍,给n根作为原料 ...
- Wooden Sticks POJ - 1065(最大上升子序列+动态规划状态转移思维)
题意: 给你n个木棍的长度和重量,让其成为上升序列,如果不能达到,就需要重新一分钟设置. a)第一个木棍的准备时间为1分钟. b)在处理长度为l和重量为w的棒之后,如果l <= l'并且w &l ...
- HDU-1051 Wooden Sticks
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- 题解 Sticks 小木棍
题解 Sticks 小木棍 题目描述: 每组数据给出N根小木棍,把它们拼接成若干根长度相等的木棍,求该长度的最小值. 题解: 该题就是dfs深搜+剪枝 ```cpp #include<iostr ...
- ZOJ 1025 Wooden Sticks(快排+贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 题目大意:机器运送n个木条,每个木条有一个长度和重量.运送第一根木 ...
- hdu1051 Wooden Sticks
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1051 大意:求最少升序序列的个数. #include <cstdio> #include &l ...
- 题解报告:hdu 1257 最少拦截系统(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是 ...
- HDU - 6955 Xor sum tire树 + 贪心
传送门 文章目录 题意: 思路: 题意: 给你一个数列aaa,你需要找出来一个长度最小且左端点最靠前的区间,使其异或和≥k\ge k≥k. n≤1e5,0≤ai,k<230n\le1e5,0\l ...
最新文章
- Pycharm中Python3连接Oracle
- Ubuntu20.04更换为国内源
- 玩转oracle 11g(7):导出导入数据库
- [ARM] [基础][编译]ARM的浮点功能历史分类和对应的编译选项
- 页面无任何操作30秒后退出1
- 其他测试用例设计方法-错误推测法与正交实验法
- FZU 1924——死锁——————【topo判环】
- CF1096F Inversion Expectation
- scala中内部函数的使用
- rapidxml往xml文件循环写入内容
- vs2015安装+下载详细教程
- python能做什么有趣的东西-Python 里itchat 模块能实现什么有趣的东西?
- 0712-插曲-对拍
- 赛博朋克!灵感来自枫树种子荚的多翼滑翔机,空中可分体
- 产品经理的六大工作职责——最简洁
- 从面向对象设计思想出发理解Spring AOP编程
- [2020 年百度之星·程序设计大赛 - 复赛] Binary Addition
- 你投的简历提示不合适,建议参考STAR法则
- SpringCloud 整合 Seata
- 机械学习十大经典算法