40分,求改!!!
查看原帖
40分,求改!!!
1557861
heguanchong楼主2024/12/25 18:57

本蒟蒻的代码

#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;
}

求改代码

2024/12/25 18:57
加载中...