[sicily]【1001】 会议安排(田忌赛马类贪心)
題干:
N個會議要同時舉行,參會人數(shù)分別為A[0], A[1], ...,A[N-1]. 現(xiàn)有M個會議室,會議室可容納人數(shù)分別為B[0], B[1], ...,B[M-1]. 當A[i]<=B[j]時,可以把會議i安排在會議室j,每間會議室最多安排一個會議,每個會議最多只能安排一個會議室. 求最多安排多少個會議.
1<= N, M <= 100000, 每個會議的參會人數(shù)和每間會議室的容納人數(shù)均在1和1000之間.
請為下面的Solution類實現(xiàn)解決上述問題的函數(shù)assignConferenceRoom. 函數(shù)參數(shù)A和B的意義如上,返回值為最多可安排的會議數(shù).
class Solution {
public:
??? intassignConferenceRoom(vector<int>& A, vector<int>& B) {
? ? ? ??
??? }
};
例1:A={2, 3}, B={1, 2},答案為1.
例2:A={3, 4, 5},B={10, 3, 2},答案為2.
注意:你只需要提交Solution類的代碼,你在本地可以編寫main函數(shù)測試程序,但不需要提交main函數(shù)的代碼. 注意不要修改類和函數(shù)的名稱.
解題報告:
????田忌賽馬類貪心。需要將兩個數(shù)組均同序排序,然后進行求解。
ac代碼:
#include<iostream> #include<vector> #include<algorithm> using namespace std;int A[100],B[100]; int main() {int n;cin>>n;for(int i = 0; i<n; i++) {scanf("%d",&A[i]); }for(int i = 0; i<n; i++) {scanf("%d",&B[i]); }sort(A,A+n,greater<int>() );sort(B,B+n,greater<int>() );int i = 0 , j = 0;int ans = 0 ;while(i<n && j<n) {if(B[j]>= A[i]) {ans++;j++;i++;}else {i++;}}printf("%d\n",ans);return 0 ; }有一個題是類似的,鏈接如下:
總結(jié)
以上是生活随笔為你收集整理的[sicily]【1001】 会议安排(田忌赛马类贪心)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝小米12S Pro不止有纯白色机身:还
- 下一篇: MMS协议