oj

20170720_hdu1050

2017-07-20  本文已影响0人  zhaohaoying

题目要求:

在窄走廊移动桌子,区间重叠的无法同时移动,求最小移动次数*10即为最小移动时间。

思路:

1、几个移动过程两两不相容,求最小调解次数即为求两两不相容的集合的最大元素个数。
2、将每一点作为一维数组的一个元素,求其参与次数,次数最大说明在该处互不相容的移动过程最多,该次数即为所求。


//
//  main.cpp
//  hdu1050
//
//  Created by Haoying Zhao on 17/7/20.
//  Copyright © 2017年 Haoying Zhao. All rights reserved.
//

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    while(n>0) {
        n--;
        int a[200] = {0};
        int m,t1 = 0,t2 = 0;
        cin >> m;
        for(int i = 0; i < m; i++) {
            cin >> t1;
            cin >> t2;
            if(t2 < t1) {
                int t = t2;
                t2 = t1;
                t1 = t;
            }
            t1 = (t1-1)/2;
            t2 = (t2-1)/2;
            for(int i = t1; i <= t2; i++)
                a[i]++;
        }
        int max = 0;
        for(int i = 0; i < 200; i++) {
            if(max < a[i])
                max = a[i];
        }
        cout << max*10 << endl;
    }
    return 0;
}

总结:

上一篇下一篇

猜你喜欢

热点阅读