Wooden Sticks(hdu1051排序法的应用)
来源:互联网 发布:mac版vpn哪个好用 编辑:程序博客网 时间:2024/06/08 16:14
/*//http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22157#problem/F
http://acm.hdu.edu.cn/showproblem.php?pid=1051
Wooden Sticks
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8411 Accepted Submission(s): 3428
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).
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
Sample Output
2
1
3
Source
Asia 2001, Taejon (South Korea)
题意:
给出一系列木棍的长度和重量,第一根木棍进行操作用时1minute,当满足第j根木棍满足li<=lj&&wi<=wj时操作时间为零,否则为1
将所有的木棍进行操作,求最少需要的时间
思路:排序法得的应用,以棍长短的优先
然后从最短的那根可以一一历遍(这里即将已满足条件的木棍要进行标记,以省时),并且记录时间
*/
http://acm.hdu.edu.cn/showproblem.php?pid=1051
Wooden Sticks
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8411 Accepted Submission(s): 3428
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).
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
Sample Output
2
1
3
Source
Asia 2001, Taejon (South Korea)
题意:
给出一系列木棍的长度和重量,第一根木棍进行操作用时1minute,当满足第j根木棍满足li<=lj&&wi<=wj时操作时间为零,否则为1
将所有的木棍进行操作,求最少需要的时间
思路:排序法得的应用,以棍长短的优先
然后从最短的那根可以一一历遍(这里即将已满足条件的木棍要进行标记,以省时),并且记录时间
*/
#include<stdio.h>#include<algorithm>#include<stdlib.h>#include<string.h>#include <iostream>using namespace std;const int maxn=5000+10;int vis[maxn];struct sticks{ int L; int W;}st[maxn];int cmp(sticks s1,sticks s2) { return (s1.L<s2.L||(s1.L==s2.L&&s1.W<=s2.W)); }int main() {int T,n,k; int i,j,ans,t; scanf("%d",&T); while(T--) { memset(vis,0,sizeof(vis)); scanf("%d",&n); for(i=0;i<n;i++) {scanf("%d%d",&st[i].L,&st[i].W); } sort(st,st+n,cmp);//以短的木棍为优先,排序 ans=n; k=0; for(i=0;i<n;i++)//从当前最短的木棍可以寻找 { j=i; if(!vis[j])//如果该木棍未被操作 { t=j+1; while(t<n) { if(!vis[t]) if(st[j].L<=st[t].L&&st[j].W<=st[t].W)//如果该木棍可操作,则继续寻找,并加以标记 { vis[t]=1; ans--; k++; j=t; } t++; } } } //printf("k=%d",k); //for(i=0;i<n;i++) // printf("(%d,%d) ",st[i].L,st[i].W); printf("%d\n",ans); } //system("pause"); return 0;}
- Wooden Sticks(hdu1051排序法的应用)
- 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
- USACO:Score Inflation
- selenium2.0数据驱动测试的应用
- The silver search(ag)比ack-grep还快
- sharePoint 发生意外错误.显示错误详细信息
- 杭电2014
- Wooden Sticks(hdu1051排序法的应用)
- 默认路由详解
- hdu 3183 A Magic Lamp
- HUD1728:逃离迷宫
- C++ 虚函数表解析
- 杭电2015
- GDAL读写矢量文件——C#
- Discount(HDU 4104,求数列和子集问题)
- moai 入门