33 lines
1.0 KiB
C++
33 lines
1.0 KiB
C++
#include <bits/stdc++.h>
|
||
using namespace std;
|
||
typedef pair<int, int> 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;
|
||
} |