码迷,mamicode.com
首页 > 编程语言 > 详细

HD-ACM算法专攻系列(21)——Wooden Sticks

时间:2017-10-07 17:47:42      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:ima   ota   源码   image   scan   proc   需要   sed   include   

题目描述:

技术分享

技术分享

 

AC源码:

此题考查贪心算法,解题思路:首先使用快速排序,以w或l按升序排序(注意相等时,应按另一值升序排序),这样就将二维变量比较,变为了一维的,排好序的一边就不需要去管了,只需要对未排序的一边直接进行贪心遍历。时间复杂度O(n^2)

#include"iostream"
#include"algorithm"
using namespace std;

struct Stick
{
    int l;
    int w;
    bool processed;
};

bool cmp(Stick a, Stick b)
{
    
    if(a.l < b.l)
    {
        return true;
    }
    else if(a.l == b.l)
    {
        return a.w < b.w;
    }
    else
    {
        return false;
    }
}

int main()
{
    int t, n, total, val;
    Stick s[5000];
    scanf("%d", &t);
    for(int i = 0; i < t; i++)
    {
        scanf("%d", &n);
        total = 0;
        for(int j = 0; j < n; j++)
        {
            scanf("%d %d", &s[j].l, &s[j].w);
            s[j].processed = false;
        }
        sort(s, s+n, cmp);
        for(int j = 0; j < n; j++)
        {
            if(!s[j].processed)
            {
                total++;
                val = s[j].w;
                s[j].processed = true;
                for(int k = j + 1; k < n; k++)
                {
                    if(!s[k].processed && s[k].w >= val)
                    {
                        val = s[k].w;
                        s[k].processed = true;
                    }
                }
            }
        }
        printf("%d\n", total);
    }
    return 0;
}

  

HD-ACM算法专攻系列(21)——Wooden Sticks

标签:ima   ota   源码   image   scan   proc   需要   sed   include   

原文地址:http://www.cnblogs.com/forcheng/p/7634905.html

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