2019牛客暑期多校2-Partition problem深搜
Posted PushyTao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019牛客暑期多校2-Partition problem深搜相关的知识,希望对你有一定的参考价值。
输入
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;
}
以上是关于2019牛客暑期多校2-Partition problem深搜的主要内容,如果未能解决你的问题,请参考以下文章