40
查看原帖
40
773533
FXHai楼主2024/9/2 21:05
#include<iostream>
using namespace std;
const long long N=1e8+5;
int n,l[11],r[11],p[N],m=N,idx=1,v[N];
void dfs(int x,int s){
	int t;
	if(s==n){
		m=min(idx+max(r[p[idx]],l[x])+1,m);
		return ;
	}
	if(x!=0){
		idx=idx+max(r[p[idx]],l[x])+1;
		if(s==1) idx=1;
		p[idx]=x;
		v[x]=1;
	}
	for(int i=1;i<=n;i++){
		t=max(r[p[idx]],l[i])+idx+1;
		if(v[i]==0){
			p[t]=i;
			v[i]=1;
			dfs(i,s+1);
			p[t]=0;
			v[i]=0;
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>l[i];
	for(int i=1;i<=n;i++) cin>>r[i];
	dfs(0,0);
	cout<<m;
}
2024/9/2 21:05
加载中...