input
第一行乙個正整數n (n <= 10000)代表活動的個數。output第二行到第(n + 1)行包含n個開始時間和結束時間。
開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000
一行包含乙個整數表示最少教室的個數。思路:發現好多貪心的題目都是用優先佇列來解決的。。。。
著個題目實際上就是求很多區間當中最大的重疊部分的區間個數。就是因為想到這裡以為是直接貪心,想了好久發現並沒有什麼好的方法去實現。然後看了一下之前寫的貪心題目就想到了優先佇列。 按照結束時間最小值優先的策略就可以很輕鬆的解決這個題目。
#include #include #include #include #include #include using namespace std;
#define inf 1000000005
#define ll long long
int const maxn = 10005;
struct node
}a[maxn];
bool cmp(node a,node b)
{ if(a.s!=b.s)return a.sq;
while(!q.empty())q.pop();
q.push(a[0]);
for(int i = 1 ; i < n ; i++)
{node temp = q.top();
q.pop();
if(a[i].s
51nod1428 優先佇列
題意 中文題誒 思路 貪心 問最少要多少教室就是求最多有多少個時間段產生了交集咯。我們先用結構體儲存區間並將其按照左端點公升序排列,若左端點相同則按右端點公升序排列。接下來遍歷所有區間,並維護乙個優先佇列,其中儲存區間右端點值。對於當前區間,我們將優先佇列中所有比當前區間左端點小的元素刪除 因為其所...
51nod 1428 活動安排問題(優先佇列)
1428 活動安排問題 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二...
51nod1428活動安排問題(貪心 優先佇列)
活動安排問題 51nod 1428 input第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000output一行包含乙個整數表示最少教室的個數。sample input 3 1...