您的位置:首页 > 其它

BestCoder #2 1001 TIANKENG’s restaurant && Nyoj 168 房间安排

2014-07-28 18:33 309 查看
这两个题是一类的题目。

就是典型的酒店安排房间以及饭店安排座椅等的问题。在生活中,是很常见的问题, 很有实用性。

题目链接:hdu 4883nyoj 168

nyoj 上的数据较水,也可以暴力就过的。

这是巧妙的用法,很是令人折服。 把开始时间和结束时间hash到数组上就可以了。开始时间的位置+k,表示在该时间入住k个房间,结束时间-k,表示在该事件空出k 个房间。个中奥妙还是仔细体会一下,很有技巧性的一类问题。。

Code:(以hdu 4883 为例)

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

const int N = 1445;
int hash
;

int main(){
    int T;
    scanf("%d", &T);
    while(T --){
        memset(hash, 0, sizeof(hash));
        int n;
        scanf("%d", &n);
        for(int i = 1; i <= n; i++){
            int k, x1, y1, x2, y2, bt, et;
            scanf("%d %d:%d %d:%d", &k, &x1, &y1, &x2, &y2);
            bt = x1 * 60 + y1;
            et = x2 * 60 + y2;
            hash[bt] += k;
            hash[et] -= k;
        }
        int ans = -1, sum = 0;
        for(int i = 0; i <= 1440; i ++){
            sum += hash[i];
            if(sum > ans) ans = sum;
        }
        printf("%d\n", ans);
    }
    return 0;
}


技巧常常会令人震惊。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: