码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1051 Wooden Sticks

时间:2015-02-01 21:37:59      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=1051

 

题意:

给定n根木条的长度l和重量w

从1min开始,每次处理长度为l重量为w的木条后,处理l‘>=l且w‘>=w的木条不费时间,否则+1min

求处理全部木条所需的最短时间

 

解法:

贪心法

将木条按长度l和重量w升序排序

从第一个未标记的木条开始,往后扫一遍将第一个满足w‘>=w的木条进行标记,直到所有木条被标记

则扫的次数就是最短时间

 

代码:  0MS  1100K

#include <cstdio>
#include <algorithm>
using namespace std;

#define N 5000

struct Stick {
    int l, w;
} s[N];
bool vis[N];

bool cmp(Stick a, Stick b) {
    return a.l < b.l || a.l == b.l && a.w < b.w;
}

int main() {
    int t, n, ans;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        for (int i = 0; i < n; i++) {
            scanf("%d%d", &s[i].l, &s[i].w);
            vis[i] = 0;
        }
        sort(s, s + n, cmp);
        ans = 0;
        for (int i = 0; i < n; i++) {
            if (!vis[i]) {
                for (int j = i + 1, mn = s[i].w; j < n; j++) {
                    if (!vis[j] && s[j].w >= mn) {
                        mn = s[j].w;
                        vis[j] = 1;
                    }
                }
                ans++;
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}

 

HDU 1051 Wooden Sticks

标签:

原文地址:http://www.cnblogs.com/rsola/p/4266022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!