比赛 |
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;
}