zoukankan      html  css  js  c++  java
  • ACM Wooden Stricks

    有一堆n根木棍。每根棍子的长度和重量是预先知道的。 这些棒子将被木工机器逐一加工。。它需要一些时间,称为安装时间,用于机器准备加工棒。设置时间与机器中的清洁操作和更换工具和形状相关联。木工机械的安装时间如下:

    (a)第一个木棒的设置时间是1分钟。

    (b)在处理一根长度l和重量w后,如果l < = l '和w < = w ',机器将不需要安装长度l '和weight w '。否则,安装需要1分钟。

    你要找到最小的安装时间来处理一堆n个木棒。例如,如果你有五根长度和重量为(4、9)、(5、2)、(2、1)、(3、5)、(1、4),那么最小设置时间应为2分钟,因为有一对(1,4),(3,5),(3,5),(4,9),(2,1),(2,1),(5,2)。

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

    输出应在分钟内包含最小设置时间,每行一个。


    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

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct node{
     4     int l;
     5     int w;
     6     bool flag;
     7 }sticks[5005];
     8 bool cmp(node a,node b)
     9 {
    10     if(a.l!=b.l)
    11         return a.l > b.l;
    12     else
    13         return a.w > b.w;
    14 }
    15 int main()
    16 {
    17     int t,n;
    18     while(cin>>t)
    19     {
    20         while(t--)
    21         {
    22             scanf("%d",&n);
    23             for(int i = 0; i < n; i++)
    24             {
    25                  scanf("%d %d",&sticks[i].l,&sticks[i].w);
    26                     sticks[i].flag = false;
    27             }
    28 
    29              sort(sticks,sticks+n,cmp);
    30             
    31             int ans = 0,min;
    32             for(int i = 0; i < n; i++)
    33             {
    34                 if(sticks[i].flag) continue;  /*说明sticks[i]已经被处理*/
    35                   min = sticks[i].w;
    36                  
    37                 for(int j = i+1; j < n; j++) /*往后找 l已经排好了序*/ 
    38                 {
    39                     if(min >=sticks[j].w && !sticks[j].flag) /*满足提议所给条件*/ 
    40                     {
    41                         min = sticks[j].w; /*按照题中条件 min此时应该要设为木块j的重量*/ 
    42                         sticks[j].flag = true;
    43                     }
    44                 }
    45                 ans++;
    46             } 
    47             cout<<ans<<endl;
    48         }
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    第一款上位机的笔记(MFC)——VS2010
    C++随笔(四)
    C++随笔(三)
    C++随笔(二)障眼法
    C++随笔
    matlab中的数据图像拟合
    在keil中调试汇编程序
    redis常见的面试题及答案
    spring定时任务的几种实现方式
    【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思
  • 原文地址:https://www.cnblogs.com/jj81/p/7421092.html
Copyright © 2011-2022 走看看