思路:
贪心。既然每个人的左边是其他人的右边,每个人的右边是其他人的左边,那么使重叠的部分最多即可。
实现:
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 int l[100005], r[100005], n; 5 int main() 6 { 7 while (cin >> n) 8 { 9 for (int i = 0; i < n; i++) 10 { 11 cin >> l[i] >> r[i]; 12 } 13 sort(l, l + n); sort(r, r + n); 14 ll ans = 0; 15 for (int i = 0; i < n; i++) ans += max(l[i], r[i]); 16 cout << ans + n << endl; 17 } 18 return 0; 19 }