Hdu1051 Wooden Sticks
来源:互联网 发布:淘宝店货到付款 编辑:程序博客网 时间:2024/05/17 08:01
Problem Description
There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, called setup time, for the machine to prepare processing a stick. The setup times are associated with cleaning operations and changing tools and shapes in the machine. The setup times of the woodworking machine are given as follows:
(a) The setup time for the first wooden stick is 1 minute.
(b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l' and weight w' if l<=l' and w<=w'. Otherwise, it will need 1 minute for setup.
You are to find the minimum setup time to process a given pile of n wooden sticks. For example, if you have five sticks whose pairs of length and weight are (4,9), (5,2), (2,1), (3,5), and (1,4), then the minimum setup time should be 2 minutes since there is a sequence of pairs (1,4), (3,5), (4,9), (2,1), (5,2).
(a) The setup time for the first wooden stick is 1 minute.
(b) Right after processing a stick of length l and weight w , the machine will need no setup time for a stick of length l' and weight w' if l<=l' and w<=w'. Otherwise, it will need 1 minute for setup.
You are to find the minimum setup time to process a given pile of n wooden sticks. For example, if you have five sticks whose pairs of length and weight are (4,9), (5,2), (2,1), (3,5), and (1,4), then the minimum setup time should be 2 minutes since there is a sequence of pairs (1,4), (3,5), (4,9), (2,1), (5,2).
Input
The input consists of T test cases. The number of test cases (T) is given in the first line of the input file. Each test case consists of two lines: The first line has an integer n , 1<=n<=5000, that represents the number of wooden sticks in the test case, and the second line contains n 2 positive integers l1, w1, l2, w2, ..., ln, wn, each of magnitude at most 10000 , where li and wi are the length and weight of the i th wooden stick, respectively. The 2n integers are delimited by one or more spaces.
Output
The output should contain the minimum setup time in minutes, one per line.
Sample Input
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
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
Sample Output
2
1
3
题意为一台机器处理木棒,
1.处理第一根木棒需要1分钟;
2.若之后处理的木棒长度以及重量均大于等于之前的木棒,则不需要花费时间;
求最少耗时。
很显然是一道贪心题,
我们首先对木棒进行排序,用u[i]来表示木棒是否被处理;
那么取第一根木棒进行处理,对之后满足条件2的木棒均进行处理,
这样在回过头去找未被处理的第一根木棒继续进行上述操作。
1.处理第一根木棒需要1分钟;
2.若之后处理的木棒长度以及重量均大于等于之前的木棒,则不需要花费时间;
求最少耗时。
很显然是一道贪心题,
我们首先对木棒进行排序,用u[i]来表示木棒是否被处理;
那么取第一根木棒进行处理,对之后满足条件2的木棒均进行处理,
这样在回过头去找未被处理的第一根木棒继续进行上述操作。
#include <cstdio>#include <iostream>#include <cmath>#include <cstring>#include <algorithm>using namespace std;struct mubang{ int l; int w;}a[5005];bool cmp(mubang k1,mubang k2){ if(k1.l==k2.l) return k1.w<k2.w; else return k1.l<k2.l;}int main(){ int t,n,i,s,ans,ll,ww; int u[5005]; scanf("%d",&t); while(t--){ memset(u,0,sizeof(u)); scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d%d",&a[i].l,&a[i].w); } sort(a,a+n,cmp); s=0; ans=0; while(s<n){ if(u[s]==0){ ll=a[s].l; ww=a[s].w; ans++; for(i=s;i<n;i++){ if(u[i]==0&&a[i].l>=ll&&a[i].w>=ww){ ll=a[i].l; ww=a[i].w; u[i]=1; } } } else s++; } printf("%d\n",ans); } return 0;}
0 0
- HDU1051(Wooden Sticks)
- HDU1051:Wooden Sticks
- hdu1051(Wooden Sticks 贪心)
- hdu1051 Wooden Sticks (贪心)
- hdu1051 Wooden Sticks
- HDU1051 Wooden Sticks
- HDU1051 Wooden Sticks 贪心
- HDU1051--Wooden Sticks
- hdu1051 Wooden Sticks贪心
- HDU1051 Wooden Sticks 【贪心】
- HDU1051 Wooden Sticks 贪心
- ACM-HDU1051-Wooden Sticks
- HDU1051 Wooden Sticks【贪心】
- hdu1051 Wooden Sticks
- hdu1051 Wooden Sticks
- HDU1051 Wooden Sticks
- Hdu1051 Wooden Sticks
- HDU1051:Wooden Sticks
- C#配置项的保存与读取
- FormBorderStyle的FixedSingle和FixedDialog的区别
- 语音不能播放的问题
- 关于C#的dll中类的静态成员变量
- Redis学习手册(内存优化)
- Hdu1051 Wooden Sticks
- IOS Dev Intro - NSInteger
- Java内部类的使用小结
- HDU-1527-取石子游戏【威佐夫博弈】
- 安卓里面的Inflate的作用以及注意事项
- 暴风魔镜VR自动漫游
- map的有序排放
- 字符串处理总结之一(C#String类)
- Redis学习手册(管线)