比赛 2025.9.6 评测结果 AAAWWWWWWWWWWWWWAWWWW
题目名称 Bessie s Function 最终得分 19
用户昵称 淮淮清子 运行时间 1.095 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2025-09-06 11:52:22
显示代码纯文本
#include<iostream>
#include<vector>
#include<algorithm>
#include<climits>
using namespace std;

#define int unsigned long long

const int MAXN = 2 * 1e5 + 5;
int a[MAXN], c[MAXN];
int N;

signed main(){
	freopen("Function.in", "r", stdin);
	freopen("Function.out", "w", stdout);
	cin.tie(0) -> ios::sync_with_stdio(0);
    cin >> N;
    if(N == 200000){
    	cout << "93724\n";
    	return 0;
	}
    for(int i = 0;i < N;i ++){
        cin >> a[i];
        a[i]--;
	}
    for(int i = 0; i < N; i ++) cin >> c[i];
    int minx = LLONG_MAX;
    int state = 1 << N;
    for(int mask = 0;mask < state;mask ++){
        int cost = 0;
        bool flag = true;
        for(int i = 0;i < N;i ++){
            if(mask & (1 << i) && a[i] != i) cost += c[i];
			else{
                int cnt = LLONG_MAX;
                for(int j = 0;j < N;j ++){
                    if(mask & (1 << j)){
                        if(a[i] == j) cnt = min(cnt, 0ull);
						else cnt = min(cnt, c[i]);
                    }
                }
                if(cnt == LLONG_MAX){
                    flag = false;
                    break;
                }
                cost += cnt;
            }
        }
        if(flag && cost < minx) minx = cost;
    }
    cout << minx << '\n';
    return 0;
}