题解 | #活动安排#
活动安排
https://www.nowcoder.com/practice/16d971e9e42e4f3b9b1e2b8794796a43
#include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <climits> #include <vector> #include <algorithm> #include <numeric> using namespace std; /* 3 1 4 1 3 3 5 */ struct Node { int start, end; }; bool cmp(Node node1, Node node2) { if (node1.end != node2.end) return node1.end < node2.end; else return node1.start < node2.start; } int main() { vector<Node> vecNode; int n; cin >> n; for (int i = 0; i < n; i++) { Node node; cin >> node.start; cin >> node.end; vecNode.push_back(node); } // 排序 sort(vecNode.begin(), vecNode.end(), cmp); // 贪心 int sum = 0; int endtime = 0; for (int i = 0; i < n; i++) { Node node = vecNode[i]; if (node.start >= endtime) { sum++; endtime = node.end; } } cout << sum << endl; }