zoukankan      html  css  js  c++  java
  • poj1065

    题目大意:
    木棍(好吧,承认确实做过这个题,嘎嘎)
    有一堆木棍大约有n根,木棍的长度和重量都预先知道,这些木棍会在一个木工机械上一个接一个的处理,这需要一些时间,称为设置时间,为机械准备处理一根木头,这个设置时间跟清洁还有机械的工具和形状的改变有关系,木工机床安装时间如下:
    (a)第一根木棍的设置时间是1 minute.
    (b)正确加工处理一个长l重w的木棍后,如果下一根木头的长 l <= l' and w <= w'则不需要花费时间,否则将要花费1minute的设置时间。你需要找出来最小的花费时间。

    解析,好吧这个实在是没有什么创意啊,直接K掉吧


    AC
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    #define maxn 5005
    #define INF 0xffffff

    struct stick
    {
        int l, w;
    }a[maxn], b[maxn];

    bool cmp(stick n1, stick n2)
    {
        if(n1.w != n2.w)return n1.w < n2.w;
        return n1.l < n2.l;
    }
    int Find(int n, stick p)
    {
        int i, k=-1, MinLen=INF;
        for(i=0; i<n; i++)
        {
            if(p.l >= b[i].l && MinLen > p.l-b[i].l)
                k=i, MinLen = p.l-b[i].l;
        }
        return k;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int i, n, k=0;
            scanf("%d",&n);
            for(i=0; i<n; i++)
                scanf("%d%d",&a[i].l,&a[i].w);

            sort(a, a+n, cmp);

            for(i=0; i<n; i++)
            {
                int ans =Find(k, a[i]);
                if(ans ==-1)
                    ans = k++;
                b[ans]= a[i];
            }
            printf("%d ", k);
        }
        return 0;

    } 

  • 相关阅读:
    Poj 1742 Coins(多重背包)
    Poj 2350 Above Average(精度控制)
    求二进制数中1的个数
    Poj 1659 Distance on Chessboard(国际象棋的走子规则)
    Poj 2411 Mondriaan's Dream(压缩矩阵DP)
    Poj 2136 Vertical Histogram(打印垂直直方图)
    Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)
    poj 2390 Bank Interest(计算本利和)
    Poj 2533 Longest Ordered Subsequence(LIS)
    Poj 1887 Testing the CATCHER(LIS)
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4384007.html
Copyright © 2011-2022 走看看