题面

首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合。暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去。

因此考虑 \(\text{Meet in Middle}\) 。记录选取前半部分的数时的总和,然后和右边每次搜索的结果进行匹配。

我设两个集合分别为 \(x,y\) ,则 \(\sum x=\sum y\) 可以转化为 \(\sum x-\sum y=0\) ,所以我们将数字放入集合A可以当做是将总和加上这个数,将数字放入集合B可以当做是将总和减去这个数。那么只需要在枚举右边时算一下左边总和相等的集合有几个就行了,可以用 vector 维护,用 map 进行离散化。

代码

最新文章

  1. Clang Format
  2. C# webservice 编写、发布、调用
  3. Nginx作为负载均衡服务器(Windows环境)
  4. ICE系列之3对象接口定义语言——slice
  5. android 2.2 videoView 诡异bug
  6. 简单选择排序(Java)
  7. HDU 4997 Biconnected (状态压缩DP)
  8. 常用git 命令
  9. Linux vmstat命令详解
  10. Android数据存储——SQLite数据库(模板)
  11. NameCheap域名注册商的几个特点介绍
  12. Kickstart 和 Cobbler ks.cfg文件详解
  13. Python的特殊成员
  14. Final阶段第1周/共1周 Scrum立会报告+燃尽图 06
  15. 算法篇【递归2 -- N皇后问题】
  16. 玩android 遇到的问题-2014年1月15日
  17. 使用DataSource绑定一维数组时,DataTextField只需绑定空字符串
  18. [Objective-C语言教程]类别(28)
  19. Nginx内容缓存
  20. 【POI】解析xls报错:java.util.zip.ZipException: error in opening zip file

热门文章

  1. 如何在Linux下部署Samba服务?
  2. Restful规范-APIView源码分析
  3. Redis并发竞争key的解决方案详解
  4. 温故知新,基于Nexus3和Docker搭建私有Docker Mirrors镜像库
  5. C++中运算符的重载
  6. ABP Framework V4.4 RC 新增功能介绍
  7. centos8添加中文语言包
  8. 13、win10系统远程桌面oracle修正问题
  9. 15.3、mysql之InnoDB和MyISAM表空间详解
  10. 本地无法访问虚拟机的tomcat