木棍
时间限制: 1000MS   内存限制: 10000K
提交总数: 27336   接受: 11857

描述

有一堆木棍。每根杆的长度和重量是预先已知的。这些木棍将由木工机器逐一加工。它需要一些时间,称为设置时间,以便机器准备处理棒。设置时间与清洁操作以及更换机器中的工具和形状相关联。木工机械
的安装时间如下: (a)第一根木棒的安装时间为1分钟。 
(b)在加工长度为l且重量为w的棒之后,如果l <= 1'且w <= w',则机器将不需要设置长度l'和重量w'的设定时间。否则,需要1分钟进行设置。 
你要找到处理一堆n根木棍的最短安装时间。例如,如果您有五根长度和重量对分别为(9,4),(2,5),(1,2),(5,3)和(4,1),那么最小设置时间应该是2分钟,因为存在一对(4,1),(5,3),(9,4),(1,2),(2,5)的序列。

输入

输入由T个测试用例组成。测试用例(T)的数量在输入文件的第一行中给出。每个测试用例由两行组成:第一行有一个整数n,1 <= n <= 5000,表示测试用例中木棒的数量,第二行包含2n个正整数l1,w1,l2, w2,...,ln,wn,每个幅度最多10000,其中li和wi分别是第i个木棍的长度和重量。2n个整数由一个或多个空格分隔。

产量

输出应包含最小设置时间(以分钟为单位),每行一个。

样本输入

3
5
4 9 5 2 2 1 3 5 1 4
3
2 2 1 1 2 2
3
1 3 2 2 3 1

样本输出

2
1
3
分析:找出最佳加工顺序即可求出最优解,而且这个题目类似于最大兼容活动子集,所以我将L和W看成活动的开始和结束时间。只需要将他们按规则排好序,两层for就可以得出最少分钟数
 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<map>
#include<set>
#include<list>
#include<queue>
#include<string>
#include<algorithm>
#include<iomanip>
using namespace std; #define MAX 10005
int t;
int n; struct woodensticks
{
int Begin;
int End;
bool operator < (const woodensticks & s)const
{
if(End == s.End)//W相等
{
return Begin <= s.Begin;//按L递增排序
}
else
{
return End <= s.End;//否则W递增排序
}
}
}; woodensticks arr[MAX];
int vis[MAX]; int main()
{
cin>>t;
while(t --)
{
int Count = ;
memset(arr,,sizeof(arr));
memset(vis,,sizeof(vis));
cin>>n;
for(int i = ;i <= n; i++)
{
cin>>arr[i].Begin>>arr[i].End;
}
sort(arr + ,arr + n + );
for(int i = ; i <= n;i ++)
{
if(vis[i] == )//当前木棍未考虑
{
vis[i] = ;
int prebeg = arr[i].Begin;
int preend = arr[i].End;//记录其W和L
for(int j = i + ; j <= n;j++)//依次比较其后面的
{
if(arr[j].Begin >= prebeg && arr[j].End >= preend && vis[j]== )//找出最近的L<=L',W<=W'
{
vis[j] = ;//标记
preend = arr[j].End;
prebeg = arr[j].Begin;//更新并重复,直到循环结束 回到第一层for未考虑的 继续贪心选择
}
}
Count ++;
}
}
cout<<Count-<<endl;//多加一次,减掉1
}
return ;
}//Accepted    840K    79MS
因为已经按规则排好了序,所以在第二个for循环内总能挑出在1分钟内加工完的所有木棍,每次进入第二层for就加一分钟时间,直到所有的木棍都考虑结束。

POJ1065(Wooden Sticks)--贪心的更多相关文章

  1. 1270: Wooden Sticks [贪心]

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

  2. HDOJ 1051. Wooden Sticks 贪心 结构体排序

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

  3. HDOJ.1051 Wooden Sticks (贪心)

    Wooden Sticks 点我挑战题目 题意分析 给出T组数据,每组数据有n对数,分别代表每个木棍的长度l和重量w.第一个木棍加工需要1min的准备准备时间,对于刚刚经加工过的木棍,如果接下来的木棍 ...

  4. HDU 1051 Wooden Sticks (贪心)

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

  5. uvalive 2322 Wooden Sticks(贪心)

    题目连接:2322 Wooden Sticks 题目大意:给出要求切的n个小木棍 , 每个小木棍有长度和重量,因为当要切的长度和重量分别大于前面一个的长度和重量的时候可以不用调整大木棍直接切割, 否则 ...

  6. HDU 1051 Wooden Sticks 贪心||DP

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

  7. HDU - 1051 Wooden Sticks 贪心 动态规划

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

  8. hdu1051 Wooden Sticks(贪心+排序,逻辑)

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

  9. hdu_1051 Wooden Sticks 贪心

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

随机推荐

  1. KL距离(相对熵)

    KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...

  2. ReentrantLock、Condition结合使用实现多线程通讯

    package maptoxml; import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; ...

  3. Github排名靠前的iOS库

    //iOS第三方开源库的吐槽和备忘 http://blog.ibireme.com/2013/09/23/ios-third-party-libs/#more-41361 //整理了一份Github上 ...

  4. 深入理解Java虚拟机 - 书评

    谈起<深入理解java虚拟机>这本书,让我印象深刻的就是换工作跳槽面试的时候,当时刚进入java开发这个行业的时候,平时只是做一些对数据库的增删改查等功能,当自己技术增长一些的时候,就开始 ...

  5. winform软件版本检测自动升级开发流程(转)

    注:按此博文试验OK 基于C/S的开发有开发效率高,对于业务逻辑复杂,且不需要外网使用具有较大优势,但是弊端也不可忽视,就是升级麻烦,不可能每写一个版本就要拿着安装包给每个人去替换,这样不仅搞得自己很 ...

  6. LeetCode_111. Minimum Depth of Binary Tree

    111. Minimum Depth of Binary Tree Easy Given a binary tree, find its minimum depth. The minimum dept ...

  7. kubeadm 安装kubernetes1.6.2

    准备工作 安装依赖 yum install -y wget vim net-tools epel-release 修改内核参数 cat <<EOF > /etc/sysctl.d/k ...

  8. fetch jsonp请求接口

    function loadTbbRec() { var fetchJsonp = require('fetch-jsonp'); fetchJsonp(ext.info.tbbRecUrl, { he ...

  9. MS SQL查询所有表行数,获取所有数据库名,表名,字段名

    1.获取所有数据库名 --SELECT Name FROM Master..SysDatabases ORDER BY Name -- 2.获取所有表名: --SELECT Name NAMEtemp ...

  10. 第七章 与Web集成——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2024723 目录贴:跟我学Shiro目录贴 Shiro提供了与Web集成的支持,其通过一个Sh ...