输入
1 0 3 3 0
输出
3
题意:
将2*n个人分成两部分,每部分都有n个人
而且每个人只能属于一个组,问按照给出的算式得到的竞争力最大值是多少
ll n,ans = 0; ll a[40][40]; int sel[40]; ll sum[maxn]; int r = 0; void dfs(ll curval,int pos){ if(r == n) { ans = max(ans,curval); return ; } if(pos >= 2 * n + 1 || r > n) return ; ll s = sum[pos]; for(int i=1;i<=r;i++){ int t = sel[i]; s -= 2 * a[pos][t]; } r ++; sel[r] = pos; dfs(curval + s,pos+1); r --; dfs(curval,pos+1); } int main() { n = read; for(int i=1;i<=2*n;i++){ for(int j=1;j<=2*n;j++) a[i][j] = read,sum[i] += a[i][j]; } ans = 0; dfs(0,1); cout << ans <<endl; return 0; }