• HDU


    •                         Wooden Sticks

    •      Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
              Total Submission(s): 23527    Accepted Submission(s): 9551

    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

    题意:将一堆木棍进行加工,如果后一个木棍比前一个的长度重量都小则不需要改动,否则将花费一分钟时间改动。最后输出总时间。

    思路:可使用sort将木棍按长度从大到小排序,长度相等时按重量从大到小排。然后从第一个开始按照重量进行判断,循环求出结果。(在循环时,长度一定减小,所以只需关注重量)

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct woodn
    {
    	int l;
    	int w;
    	bool flag;
    }wood[5005];
    
    bool comp(struct woodn a,struct woodn b)
    {
    	if (a.l != b.l)
    	{
    		return a.l > b.l;
    	}
    	else
    	{
    		return a.w > b.w;
    	}
    }
    int main()
    {
    	int T, n;
    	scanf("%d", &T);
    	while (T--)
    	{
    		int min_w=0; 
    		scanf("%d", &n);
    		for (int i = 0; i < n; i++)
    		{
    			scanf("%d %d", &wood[i].l, &wood[i].w);
    			wood[i].flag = false;
    		}
    		sort(wood, wood + n, comp);
    		int num = 0;
    
    		for (int i = 0; i < n; i++)
    		{
    			if (wood[i].flag)
    			{
    				continue;
    			}
    			min_w = wood[i].w;
    			for (int j = i + 1; j < n; j++)
    			{
    				if (min_w >= wood[j].w&&!wood[j].flag)
    				{
    					min_w = wood[j].w;
    					wood[j].flag = true;
    				}
    			}
    			num++;
    		}
    		printf("%d
    ", num);
    	}
    	return 0;
    }



  • 相关阅读:
    查看系统运行时间和系统当前时间
    根据端口查进程信息
    SELinux深入理解
    nginx配置文件
    centos7 nginx配置httpsCenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx环境部署(二)
    Linux的加密认证功能以及openssl详解
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    理解GRUB2工作原理及配置选项与方法
    在用busybox制作系统过程中遇到的问题
    内核编译选配(VMware篇)
  • 原文地址:https://www.cnblogs.com/csu-lmw/p/9124477.html
Copyright © 2020-2023  润新知