zoukankan      html  css  js  c++  java
  • poj 1065 Wooden Sticks

    Wooden Sticks
    Time Limit: 1000MS Memory Limit: 10000K
    Total Submissions: 19008 Accepted: 8012
    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 ( 9 , 4 ) , ( 2 , 5 ) , ( 1 , 2 ) , ( 5 , 3 ) , and ( 4 , 1 ) , then the minimum setup time should be 2 minutes since there is a sequence of pairs ( 4 , 1 ) , ( 5 , 3 ) , ( 9 , 4 ) , ( 1 , 2 ) , ( 2 , 5 ) .
    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 2n 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

    贪心题。题目很容易懂,就不翻译了。略水,一遍AC,久违的快感!!!hhhh ,嘛,我为注意节制的(哪和哪!)

    把w和l分别按第一关键字和第二关键字排序。

    然后扫描一遍,如果符合w[i]>=wk[k]&&l[i]>=lk[k]就更新wk[k]和lk[k],分别表示的是第K的操作下能达到的最大w和l.

    如果不符合,则需要增加一分钟的工作时间。同样不要忘记更新。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <algorithm>
     6 #include <iomanip>
     7 
     8 
     9 using namespace std;
    10 
    11 int main()
    12 {
    13     int t;
    14     cin>>t;
    15     int n;
    16     int l[6666],w[6666],lk[6666],wk[6666];
    17     while (t--)
    18     {
    19         memset(l,0,sizeof(l));
    20         memset(w,0,sizeof(w));
    21         memset(lk,0,sizeof(lk));
    22         memset(wk,0,sizeof(wk));
    23         scanf("%d",&n);
    24         for (int i=1;i<=n;i++)
    25             scanf("%d %d",&l[i],&w[i]);
    26         for (int i=1;i<=n-1;i++)
    27             for (int j=i+1;j<=n;j++)
    28              if ((l[i]>l[j])||((l[i]==l[j])&&(w[i]>w[j])))
    29         {
    30             swap(l[i],l[j]);
    31             swap(w[i],w[j]);
    32 
    33         }
    34 
    35             int k;
    36             int sum=1;
    37             lk[1]=l[1];
    38             wk[1]=w[1];
    39           //  for (int i=1;i<=n;i++)
    40         //        cout<<"look"<<l[i]<<"  "<<w[i]<<endl;
    41          for (int i=1;i<=n;i++)
    42          {
    43 
    44              k=1;
    45              while ((l[i]<lk[k])||(w[i]<wk[k]))
    46              {
    47                  k++;
    48              //    cout<<"look"<<endl;
    49                  if (k>sum) break;
    50              }
    51              if (k>sum)
    52              {
    53                  sum++;
    54                  lk[k]=l[i];
    55                  wk[k]=w[i];
    56              }
    57              else
    58              {
    59                  lk[k]=l[i];
    60                  wk[k]=w[i];
    61              }
    62          //    cout<<"k:"<<k<<endl;
    63 
    64 
    65          }
    66               printf("%d
    ",sum);
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    C++库---json
    C++之单例模式
    mysql之字段(整形、字符串等)
    C++之数据类型,容器
    C++文件操作,判断两个文件内容是否相等(被修改)
    (转)mysql之index(索引)
    Django中的日期和时间格式 DateTimeField
    有关Django的smallDemo
    mysql 快速生成百万条测试数据
    从输入URL到页面加载发生了什么
  • 原文地址:https://www.cnblogs.com/111qqz/p/4380965.html
Copyright © 2011-2022 走看看