思路如下:
先對所有奶牛開始時間排序
然後新開闢乙個畜欄(再怎麼樣至少也有乙個畜欄)
每乙個畜欄就是乙個優先佇列,按照結束時間(會場安排、看電影的道理)從小到大排序
判斷奶牛屬於哪乙個畜欄就是看這個奶牛的開始時間與前幾個已經開闢完的畜欄的結束時間比,如果開始時間比結束時間段早,那就再分配新畜欄。
**如下:
#include #include #include #include #include #include #include #include using namespace std;
struct node
};bool cmp(const node &a,const node &b)
sort(cow,cow+n,cmp);
memset(use,0,sizeof(use));
int num=1;
node now = cow[0];
use[cow[0].id] = num;
q.push(now);
for(int i=1; ielse
}cout
}
貪心演算法 求解畜欄問題
題目內容 有n頭牛 1 n 50,000 要 給定每頭牛 的時間區間a,b。牛需要呆在畜欄裡才能 乙個畜欄同一時間只能容納一頭牛。問至少需要多少個畜欄,才能完成全部 工作,注意 在同乙個畜欄的兩頭牛,它們 時間區間不能在端點重合。輸入格式 第1行 乙個正整數n 第2 n 1行 第i 1行的兩個整數給...
4144 畜欄保留問題 貪心 優先佇列
總時間限制 1000ms 記憶體限制 65536kb 農場有n頭牛,每頭牛會在乙個特定的時間區間 a,b 包括a和b 在畜欄裡 且乙個畜欄裡同時只能有一頭牛在 現在農場主希望知道最少幾個畜欄能滿足上述要求,並要求給出每頭牛被安排的方案。對於多種可行方案,主要輸出一種即可。輸入的第一行包含乙個整數n ...
貪心演算法 畜欄保留問題(poj3190 )
總時間限制 1000ms 記憶體限制 65536kb 描述 農場有 n頭牛,每頭牛會在乙個特定的時間區間 a,b 包括a和b 在畜欄裡擠奶,且乙個畜欄裡同時只能有一頭牛在擠奶。現在農場主希望知道最少幾個畜欄能滿足上述要求,並要求給出每頭牛被安排的方案。對於多種可行方案,主要輸出一種即可。輸入輸入的第...