牛客多校第二场 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; }