暴力的看过来
2026-09-02 19:28:28
发布于:广东
11阅读
0回复
0点赞
不同的牛数有不同的排序方法
是几个牛就几个循环
每次排除相同牛的循环
最后判断和之前比那个小
#include<bits/stdc++.h>
using namespace std;
struct node{
int aa,bb;
}dd[100];
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++)
cin>>dd[i].aa;
for(int i=1;i<=n;i++)
cin>>dd[i].bb;
int ans=1e9;
if(n==2){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
if(a!=b){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
ans=min(ans,sum);
}
}
if(n==3){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
if(a!=b&&a!=c&&b!=c){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
ans=min(ans,sum);
}
}
if(n==4){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
ans=min(ans,sum);
}
}
if(n==5){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
for(int e=1;e<=n;e++)
if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
sum+=max(dd[d].bb,dd[e].aa);
ans=min(ans,sum);
}
}
if(n==6){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
for(int e=1;e<=n;e++)
for(int f=1;f<=n;f++)
if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a!=f&&e!=f&&b!=f&&c!=f&&d!=f){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
sum+=max(dd[d].bb,dd[e].aa);
sum+=max(dd[e].bb,dd[f].aa);
ans=min(ans,sum);
}
}
if(n==7){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
for(int e=1;e<=n;e++)
for(int f=1;f<=n;f++)
for(int g=1;g<=n;g++)
if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a!=f&&e!=f&&b!=f&&c!=f&&d!=f&&a!=g&&b!=g&&c!=g&&d!=g&&e!=g&&f!=g){
int sum=n;
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
sum+=max(dd[d].bb,dd[e].aa);
sum+=max(dd[e].bb,dd[f].aa);
sum+=max(dd[f].bb,dd[g].aa);
ans=min(ans,sum);
}
}
if(n==8){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
for(int e=1;e<=n;e++)
for(int f=1;f<=n;f++)
for(int g=1;g<=n;g++)
for(int h=1;h<=n;h++){
int sum=n;
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&d!=e&&d!=f&&d!=g&&d!=h&&e!=f&&e!=g&&e!=h&&f!=g&&f!=h&&g!=h){
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
sum+=max(dd[d].bb,dd[e].aa);
sum+=max(dd[e].bb,dd[f].aa);
sum+=max(dd[f].bb,dd[g].aa);
sum+=max(dd[g].bb,dd[h].aa);
ans=min(ans,sum);
}
}
}
if(n==9){
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++)
for(int c=1;c<=n;c++)
for(int d=1;d<=n;d++)
for(int e=1;e<=n;e++)
for(int f=1;f<=n;f++)
for(int g=1;g<=n;g++)
for(int h=1;h<=n;h++)
for(int i=1;i<=n;i++){
int sum=n;
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&d!=e&&d!=f&&d!=g&&d!=h&&e!=f&&e!=g&&e!=h&&f!=g&&f!=h&&g!=h&&a!=i&&b!=i&&c!=i&&d!=i&&e!=i&&f!=i&&g!=i&&h!=i){
sum+=max(dd[a].bb,dd[b].aa);
sum+=max(dd[b].bb,dd[c].aa);
sum+=max(dd[c].bb,dd[d].aa);
sum+=max(dd[d].bb,dd[e].aa);
sum+=max(dd[e].bb,dd[f].aa);
sum+=max(dd[f].bb,dd[g].aa);
sum+=max(dd[g].bb,dd[h].aa);
sum+=max(dd[h].bb,dd[i].aa);
ans=min(ans,sum);
}
}
}
cout<<ans;
return 0;
}
这里空空如也

有帮助,赞一个