4617: 【GESP2403六级】好斗的牛

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

输入

第一行 1 个正整数$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;
}