本蒟蒻的代码
#include<bits/stdc++.h>
using namespace std;
long long n,a[100010],b[100010],ans=INT_MAX,v[10],c[10];
void dfs(long long x,long long sum){
if(sum>ans) return;
if(x==n+1){
ans=min(ans,sum);
return;
}
if(x==1){
x++;
for(int i=1;i<=n;i++){
long long sum1=sum+b[i]+1;
v[i]=1;
c[x-1]=b[i];
dfs(x,sum1);
v[i]=0;
}
return;
}else if(x==n){
x++;
for(int i=1;i<=n;i++){
if(v[i]==0){
sum+=max(a[i],c[x-2])+1;
if(n==2) sum-=min(a[i],c[x-2]);
dfs(x,sum);
}
}
return;
}
x++;
for(long long i=1;i<=n;i++){
if(v[i]==0){
v[i]=1;
long long sum1=sum+max(a[i],c[x-2])+1;
if(x==3) sum1-=min(a[i],c[x-2]);
c[x-1]=b[i];
dfs(x,sum1);
v[i]=0;
}
}
}
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;i++) scanf("%lld",&a[i]);
for(long long i=1;i<=n;i++) scanf("%lld",&b[i]);
dfs(1,0);
printf("%lld",ans);
return 0;
}
求改代码