codechef Hotel Bytelandia题解
2014-05-05 11:07
483 查看
计算一个酒店的峰值人数。
就是使用两个数代表一个区域,计算一组这样的数中,有多少重合的区域?
原题:http://www.codechef.com/problems/HOTEL/
下面是使用priority_queue的解法。时间效率O(nlgn)。
就是使用两个数代表一个区域,计算一组这样的数中,有多少重合的区域?
原题:http://www.codechef.com/problems/HOTEL/
下面是使用priority_queue的解法。时间效率O(nlgn)。
#include <cstdio> #include <algorithm> #include <assert.h> #include <queue> using std::sort; class HotelBytelandia { struct twoInt { int arri, dep; bool operator<(const twoInt &t) const { return dep > t.dep; } }; public: void run() { auto cmp = [](const twoInt &a, const twoInt &b) { return a.arri < b.arri; }; int T; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); if (n < 1) { printf("0"); continue; } twoInt *A = new twoInt ; for (int i = 0; i < n; i++) { scanf("%d", &A[i].arri); } for (int i = 0; i < n; i++) { scanf("%d", &A[i].dep); } sort(A, A+n, cmp); int ans = 1; std::priority_queue<twoInt> pqt; pqt.push(A[0]); for (int i = 1; i < n; i++) { while (pqt.size() && A[i].arri >= pqt.top().dep) { pqt.pop(); } pqt.push(A[i]); ans = std::max(ans, (int)pqt.size()); } printf("%d\n", ans); delete [] A; } } }; int hotelBytelandiaRun() { HotelBytelandia htb; htb.run(); return 0; }
相关文章推荐
- Codechef Not a Triangle题解
- codechef Popular Rice Recipe题解
- codechef The Ball And Cups题解
- codechef Cutting Recipes题解
- codechef Little Elephant and Bombs题解
- codechef - Bytelandian gold coins 题解
- codechef Prime Palindromes 题解
- codechef Recipe Reconstruction 题解
- Codechef July Challenge 2014部分题解
- codechef Sums in a Triangle题解
- codechef Ciel and Receipt题解
- codechef Top Batsmen题解
- codechef The Ball And Cups题解
- code chef - Counting Matrices题解
- Codechef Maximum Weight Difference题解
- codechef Chef and The Right Triangles 题解
- [题解]CodeChef JUNE Challenge 17
- codechef February Challenge 2018 简要题解
- codechef Little Elephant and Permutations题解
- 【位运算分析+主席树】CodeChef(PREFIXOR)[Prefix XOR]题解