题目链接:https://ac.nowcoder.com/acm/contest/882/F

题意:将2×n个人分成两组,每组n个人,求一个组中所有人和另外一组的所有人的竞争值之和。

思路:

  比赛时看错题了,以为求得是每一队人的竞争值之和,写了两个小时,提交时以为会T,结果一直WA,自闭。。

  看懂题后,就开始T了。。

  n<=14,用搜索+剪枝是可以做的。搜索有C(2*n,n)的复杂度,但每种结果需要O(n*n)的复杂度来计算,总复杂度为O(n*n*C(2*n,n)),肯定会T。

  优化:简化计算结果,先预处理每一行的和v2,v2[i]即第i个人和其它所有人的竞争值的和,用vector存储已经选过的人,选择下一个人x时,用v2[i]减去2×(所有的v1[x][i]),i是已经选过得人的编号,乘2是因为之前加入i时没有减。这样复杂度就降为O(n*C(2*n,n)),因为题目给了4s,是可以过的。

     另外,可以把第1个人直接选上,因为第1个人肯定要被其中1个队选上,结果一样,这样能将复杂度减1倍。

 AC代码:

#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std; typedef long long LL;
int n;
LL v1[][],v2[],ans;
vector<int> vc; void dfs(int x,LL sum){
if(vc.size()==n){
if(sum>ans) ans=sum;
return;
}
if(x>*n) return;
LL tmp=v2[x];
for(int i=;i<vc.size();++i)
tmp-=*v1[x][vc[i]];
vc.push_back(x);
dfs(x+,sum+tmp);
vc.pop_back();
dfs(x+,sum);
} int main(){
scanf("%d",&n);
for(int i=;i<=*n;++i)
for(int j=;j<=*n;++j)
scanf("%lld",&v1[i][j]),v2[i]+=v1[i][j];
vc.push_back();
dfs(,v2[]);
printf("%lld\n",ans);
return ;
}

最新文章

  1. apache2.4 windows764 python cgi
  2. java中数组的相关知识
  3. 用 Linux自带的logrotate 来管理日志
  4. Thinking in Java——笔记(10)
  5. html5新特性之音频、视频
  6. Android MotionEvent getX() getY() getRawX() getRawY() and View getTop() getLeft()
  7. Flash Builder 4.6 界面显示一半中文一半英文?
  8. Java_Iterator-------迭代器配合Listarray使用,具有更多的功能(转载)
  9. POJ2782:Bin Packing
  10. android 权限管理和签名 实现静默卸载
  11. MongoDB 索引限制
  12. python ddt数据驱动(简化重复代码)
  13. [BZOJ 1095] [ZJOI 2007] 捉迷藏
  14. Python之在函数中使用列表作为默认参数
  15. php 时间戳最大值
  16. JMeter关联(正则表达式提取器)
  17. [CC-MINXOR]XOR Minimization
  18. .NET手记-Autofac进阶(属性和方法注入 Property and Method Injection)
  19. 网卡驱动-BD详解(缓存描述符 Buffer Description)
  20. 解决小米手机不能运行Android Studio程序的问题

热门文章

  1. Redis实战(18)Redis位图巧用,节约内存
  2. delphi将一个list中包含的元素,从另一个中删除,如果在另一个中存在的话
  3. C#如何生成setup安装文件
  4. python2topython3遇到的问题
  5. Linux shell - `dirname $0` 定位到运行脚本的相对位置
  6. 开启两个线程,一个线程打印A~Z,一个线程打印1~52的数据
  7. 一、Git的一些命令操作----创建版本库、增加文件到Git库、时光机穿梭、远程仓库
  8. go get命令在go mod目录下与正常目录执行的区别
  9. LC 672. Bulb Switcher II
  10. [Python]切换工作目录|python将目录切换为脚本所在目录