#include using namespace std; typedef pair PII; const int N = 10; PII a[N]; int ans = INT_MAX; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i].first; for (int i = 0; i < n; i++) cin >> a[i].second; do { // Q: 为什么res初始化为n? // A: 因为每个奶牛需要一个牛棚,所以初始化为n // Q:怎么想到的用全排列? // A: 因为题目要求的是所有奶牛的组合,所以需要枚举所有组合,而且题目的数据范围极小,N最大才是9,所以用全排列是可行的。 int res = n, k = a[0].second; // 排序第一的牛,它的右手安全距离a[0].second for (int i = 1; i < n; i++) { res += max(k, a[i].first); // 当前牛的左手安全距离,加上1才是真正的安全距离 k = a[i].second; } ans = min(ans, res); // 每次组合取最小值 } while (next_permutation(a, a + n)); // 枚举所有组合 cout << ans << endl; return 0; }