2019牛客暑期多校2-Partition problem深搜

简介: 题意:将2*n个人分成两部分,每部分都有n个人而且每个人只能属于一个组,问按照给出的算式得到的竞争力最大值是多少

6cc224f2abfe458d84bb63038962f6b4.png


输入


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;
}
目录
相关文章
|
算法
【LeetCode力扣】75 快速排序的子过程partition(荷兰国旗问题)
【LeetCode力扣】75 快速排序的子过程partition(荷兰国旗问题)
83 1
ACM刷题之路(十九)二分+尺取 2019暑期集训 HDU6231 K-th Number
ACM刷题之路(十九)二分+尺取 2019暑期集训 HDU6231 K-th Number
|
机器学习/深度学习 Windows
The 2022 ICPC Asia Regionals Online Contest (I)-D题题解(DFS暴搜+剪枝+打表去重+二分)
时间复杂度:O(227 + nlog(n) + T * log(n)),227是DFS打表的时间,nlog(n)是vertor排序的时间,T*log(n)是询问次数和二分搜答案的时间。(如果算错了,评论或者私信指出谢谢)
174 0
The 2022 ICPC Asia Regionals Online Contest (I)-D题题解(DFS暴搜+剪枝+打表去重+二分)
LeetCode contest 182 5368. 找出数组中的幸运数
LeetCode contest 182 5368. 找出数组中的幸运数