1 条题解
-
0
//经典深搜排列组合问题 #include<bits/stdc++.h> using namespace std; int n; struct stu{ int a,b; }arr[100]; int brr[100]={}; int crr[100]={}; int min_len=1e18; void dfs(int len){ if(len==n){ int left=1,right=left+arr[crr[0]].b; for(int i=1;i<n;i++){ if(arr[crr[i]].a<=arr[crr[i-1]].b){ left=right+1; }else{ left=left+arr[crr[i]].a+1; } if(i!=n-1) right=left+arr[crr[i]].b; } min_len=min(min_len,left); return; } for(int i=0;i<n;i++){ if(brr[i]==0){ crr[len]=i; brr[i]=1; dfs(len+1); brr[i]=0; } } } int main(){ cin>>n; for(int i=0;i<n;i++) cin>>arr[i].a; for(int i=0;i<n;i++) cin>>arr[i].b; dfs(0); cout<<min_len; return 0; }
- 1
信息
- ID
- 833
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者