刷題記錄11
連結:https://ac.nowcoder.com/acm/contest/950/A
來源:牛客網
設有個n活動的集合E={1,2,…,n},其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有一個活動能使用這一資源。每個活動i都有一個要求使用該資源的起始時間s_is i 和一個結束時間f_if i ,且s_i < f_isi<f i 。如果選擇了活動i,則它在時間區間 [ s_i , f_i )[s i ,f i )內佔用資源。若區間[ s_i , f_i )[s i ,f i )與區間[ s_j , f_j )[s j ,f j )不相交,則稱活動i與活動j是相容的。也就是說,當f_i \leq s_jf i ≤s j 或 f_j \leq s_if j ≤s i 時,活動i與活動j相容。選擇出由互相相容的活動組成的最大集合。
【程式碼】
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 100;
struct node { //結構體變數的宣告
int s, t;
bool operator<(const node &M) const { //運用布林型別來判斷s是否小於t
return t < M.t;
}
} a[N];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i].s >> a[i].t; //輸入相應的aj和at
sort(a + 1, a + 1 + n);
int lst = a[1].t, cnt = 1;
for (int i = 2; i <= n; i++) {
if (a[i].s >=lst) { //如果a[i].s>a[i].t,那麼cnt++
cnt++;
lst = a[i].t;
}
}
cout << cnt << endl;
return 0;
}完全
本題首先通過布林型別判斷輸入的每組資料中s是否小於t,然後運用for迴圈來進行每一組的s,t的比較,記錄相互相容的最大可能。
相關文章
- 2024年11月刷題記錄
- 每日刷題記錄 11-18
- 刷題記錄
- 記錄刷題日常
- Codeforces 刷題記錄
- CTF刷題記錄
- BUU刷題記錄
- 刷題記錄27
- 刷題記錄24
- LeetCode刷題記錄LeetCode
- leetcode刷題記錄 661~LeetCode
- [雜項] 刷題記錄
- 軟考刷題記錄3
- 軟考刷題記錄5
- 劍指offer刷題記錄
- 面試刷題偶有記錄面試
- 2024年8月刷題記錄
- 2024年10月刷題記錄
- 2024年9月刷題記錄
- 2024年1月刷題記錄
- 2024年4月刷題記錄
- 2024年3月刷題記錄
- 2024年2月刷題記錄
- 2024年7月刷題記錄
- 2024年6月刷題記錄
- 2024年5月刷題記錄
- LeetCode刷題記錄——day1LeetCode
- ctfshow刷題記錄-cry方向-1
- ctfshow刷題記錄-社工篇-1
- LeetCode刷題記錄——day5LeetCode
- LeetCode刷題記錄——day4LeetCode
- LeetCode刷題記錄——day3LeetCode
- LeetCode刷題記錄——day2LeetCode
- 刷題記錄(C語言)01C語言
- LeetCode-劍指Offer刷題記錄LeetCode
- leetcode每日一題刷題記錄(10.26-10.30)LeetCode每日一題
- LeetCode刷題記錄與題解(C++版本)LeetCodeC++
- leetcode刷題記錄1041-1050 python版LeetCodePython