牛客多校第二场 F题
题意就是给你2n个人,每个人之间都有相应的仇恨值,将这2n个人平均分成俩队,使得俩队之间的仇恨值最大
不会暴搜,还是自己多整理几个吧
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll a[30][30];
int n;
ll sum1 = 0,sum2 = 0;
int s1[30],s2[30];
ll ans = 0 ;
void dfs(int x,ll sum)
{
    if(sum1 == n && sum2 == n)
    {
        ans = max(ans,sum);
        return ;
    }
    if(sum1 < n)
    {
        s1[++sum1] = x;
        ll k = 0;
        for(int i=1;i<=sum2;i++)
        {
            k += a[x][s2[i]];
        }
        dfs(x+1,sum+k);
        sum1--;
    }
    if(sum2 < n)
    {
        s2[++sum2] = x;
        ll k = 0;
        for(int i=1;i<=sum1;i++)
        {
            k += a[s1[i]][x];
        }
        dfs(x+1,sum+k);
        sum2--;
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=2*n;i++)
    {
        for(int j=1;j<=2*n;j++)
        {
            scanf("%lld",&a[i][j]);
        }
    }
    dfs(1,0);
    cout<<ans<<endl;
    return 0;
}