4617: 【GESP2403六级】好斗的牛
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述

输入
第一行 1 个正整数$N$ 。
接下来一行 个用空格隔开的正整数$a_1,a_2,...,a_N$ 。
接下来一行 个用空格隔开的正整数$b_1,b_2,...,b_N$ 。
接下来一行 个用空格隔开的正整数$a_1,a_2,...,a_N$ 。
接下来一行 个用空格隔开的正整数$b_1,b_2,...,b_N$ 。
输出
输出一行一个整数,表示你最少需要留下多少牛棚。
样例输入 复制
2
1 2
1 2
样例输出 复制
4
提示
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N;
vector < int > a, b;
int ans = 1e9;
int main() {
cin >> N;
a.resize(N);
b.resize(N);
for (int i = 0; i < N; ++i) {
cin >> a[i];
}
for (int i = 0; i < N; ++i) {
cin >> b[i];
}
vector < int > permutation;
permutation.resize(N);
for (int i = 0; i < N; i++)
permutation[i] = i;
do {
int curr_len = N;
for (int i = 1; i < N; ++i) {
curr_len += max(b[permutation[i - 1]], a[permutation[i]]);
}
ans = min(ans, curr_len);
} while (next_permutation(permutation.begin(), permutation.end()));
cout << ans << endl;
return 0;
}