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

【贪心专题】HDU 1050 D - Moving Tables (移桌子)

时间:2015-04-07 13:51:05      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:贪心   acm   

链接:click here~

题意:在一个长走廊里搬桌子,走廊的两侧都是房间,把桌子从一个房间搬到另外一个房间,走廊的宽度只能允许一个桌子通过,每次搬桌子需要10分钟(每一次允许再不交叉的走廊中同时搬桌子),问最少多长时间搬完!

【解题思路】

这题也是想了好久,关键点:由于房间是奇偶分开的,所以先把他们换成连续的自然数即n=(n-1)/2.这样对门的就变成一个编号了,这点是关键,感觉好厉害(因为房间是对称分布的,需要注意一下奇偶的情况。)利用房间号分割走廊,贪心实现求走廊的最大重叠数

这里使用了C++容器的STL*max_element函数找最大元素 类似的*min_element是求函数找最小元素 .

代码:

#include <string.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=205;
int a[maxn];
int main()
{
    int n,m,i,j;
    scanf("%d",&n);
    while(n--)
    {
        int aa,bb;
        scanf("%d",&m);
        memset(a,0,sizeof(a));
        for(i=0; i<m; i++){
            scanf("%d%d",&aa,&bb);
            if(aa>bb) swap(aa,bb);
            for(j=(aa-1)/2; j<=(bb-1)/2; j++)//由于房间是奇偶分开的,所以先把他们换成连续的自然数,即n=(n-1)/2.这样对门的就变成一个编号了
                a[j]++;
        }
        printf("%d\n",*max_element(a,a+205)*10);//寻找最大元素
    }
    return 0;
}


【贪心专题】HDU 1050 D - Moving Tables (移桌子)

标签:贪心   acm   

原文地址:http://blog.csdn.net/u013050857/article/details/44915729

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