P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索
传送门
文章目录
- 目录
- 题意:
- 思路:
目录
题意:
给你nnn个数,从中任意选出一组数,使这些数能分成和相等的两组,问有多少种选数方案。
2≤n≤20,1≤ai≤1e92\le n\le 20,1\le a_i\le 1e92≤n≤20,1≤ai≤1e9
思路:
注意审题,是选出一组能分成两组和相等的即可,也就是说如果是同一组但是分成两个部分的时候有多种方案,那么也算一种。
看到nnn很小,不难想到爆搜,但是每个数有三种情况,复杂度3n3^n3n,但是我们可以使用meetinmiddlemeet\ \ in\ \ middlemeet in middle先搜一半,让后对于另一半直接使用其搜出来的信息,由于对于每一个选出来数相同的方案都视为一个方案,所以对于每个状态我们需要记一个state代表当前选了哪几个,让后去重即可。
考虑如何计算方案?假设当前两边差值的绝对值是xxx,那么需要另一半两边插值绝对值也为xxx,是否只需要加入另一半插值也为xxx的方案即可?答案是否定的,还需要判断当前这一半状态与另一半状态拼起来是否已经计算过,所以需要存下来遍历,这样复杂度有点高,但是吸氧能过。。
#include<bits/stdc++.h>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define Mid (tr[u].l+tr[u].r>>1)
#define pb push_back
using namespace std;const int N=1000010,INF=0x3f3f3f3f,mod=1e9+7;
typedef long long LL;
typedef pair<LL,LL> PII;int n;
int a[N];
map<LL,vector<int>>mp;
map<pair<LL,LL>,int>st,vis;void dfs(int u,LL l,LL r,LL state) {if(u>=n/2) {LL now=abs(r-l);if(st.count({state,now})) return;st[{state,now}]=1;mp[now].pb(state);//cout<<now<<"**"<<l<<' '<<r<<endl;return;}dfs(u+1,l,r,state);dfs(u+1,l+a[u],r,state+(1<<u));dfs(u+1,l,r+a[u],state+(1<<u));
}LL ans=0;
void solve(int u,LL l,LL r,LL state) {if(u==n) {LL now=abs(l-r);if(st.count({state,now})) return;st[{state,now}]=1;//ans+=mp[now];for(auto x:mp[now]) {if(vis.count({x,state})) continue;vis[{x,state}]=1;ans++;}return;}solve(u+1,l,r,state);solve(u+1,l+a[u],r,state+(1<<u));solve(u+1,l,r+a[u],state+(1<<u));
}void solve() {scanf("%d",&n);for(int i=0;i<n;i++) scanf("%d",&a[i]);if(n==1) {puts("0");return;}dfs(0,0,0,0);st.clear(); vis[{0,0}]=1;//for(auto x:mp) cout<<x.X<<' '<<x.Y<<endl;solve(n/2,0,0,0);printf("%lld\n",(ans));
}int main() {int _=1;while(_--) {solve();}return 0;
}
P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索相关推荐
- SP11469 SUBSET - Balanced Cow Subsets(折半搜索+状态压缩)难度⭐⭐⭐⭐★
题目链接 SP11469 SUBSET - Balanced Cow Subsets 题目翻译 给出N(1≤N≤20)N(1≤N≤20)N(1≤N≤20)个数M(i)(1<=M(i)<=1 ...
- BZOJ 2679 [Usaco2012 Open]Balanced Cow Subsets
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2679 题解 meet in the middle,枚举左边放在第一个集合,第二个集合还是 ...
- BZOJ.2679.Balanced Cow Subsets(meet in the middle)
BZOJ 洛谷 \(Description\) 给定\(n\)个数\(A_i\).求它有多少个子集,满足能被划分为两个和相等的集合. \(n\leq 20,1\leq A_i\leq10^8\). \ ...
- 【LOJ6072】苹果树【折半搜索】【矩阵树定理】【二项式反演】
题意:有好坏两种点共 nnn 个,每个好点有权值,把这 nnn 个点连成一棵树,一个好点为有用的当且仅当它至少与一个好点相邻,求所有有用的点的权值和不超过 limlimlim 的方案数. n≤40n\ ...
- [折半搜索][has] Jzoj P4250 路径
Description A国有n个城市,编号为1到n,任意两个城市之间有一条路.shlw闲得没事干想周游A国,及从城市1出发,经过且仅经过除城市1外的每个城市1次(城市1两次),最后回到城市1.由于s ...
- 【折半搜索-经典题目】中山纪念中学暑期游Day13——【GDOI2017模拟8.15】Buy
前言 考试时有道题目用到了[折半搜索] 老师推荐了这道经典题目让大家练习[前后部分算法不同]的题目 虽然不知道我有没有时间做,好歹先把题目记录一下,免得以后找不到了qwq 题目 Input Outpu ...
- Codeforces Round #297 (Div. 2)E. Anya and Cubes 折半搜索
Codeforces Round #297 (Div. 2)E. Anya and Cubes Time Limit: 2 Sec Memory Limit: 512 MB Submit: xxx ...
- [luogu4799 CEOI2015 Day2] 世界冰球锦标赛(折半搜索)
传送门 Solution 折半搜索裸题,注意\(long long\) Code #include <cmath> #include <cstdio> #include < ...
- Educational Codeforces Round 76 (Rated for Div. 2) F. Make Them Similar 折半搜索
传送门 文章目录 题意: 思路: 题意: 思路: 一个显然的思路就是2302^{30}230枚举所有的xxx,让后再检查,这个复杂度显然不能接受. 又发现对于每个位置它取多少不受其他位置限制,满足可拼 ...
最新文章
- UIProgressView的使用
- i春秋DMZ大型靶场实验(四)Hash基础
- 李国浩20179307第二周作业
- 请用JavaScript实现一个函数,接受一-个IP白名单列表whitelist以及列表ipList
- ub c语言,操作系统之LRU算法 C语言链表实现
- 英语笔记:词组句子:0806
- 发达国家餐厅的一张罚单 让我们中国人汗颜
- java datetime long_Android Java datetime值从String到Long到String问题
- 10许可证即将到期_食品经营许可证延续
- mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
- 【转】Unix的文件系统的内部结构,主要是超级块、inode相关知识
- hdu 1284 dp
- Vue+flvjs 实现视频播放
- mate2 刷机 android8,华为Mate2官方原版固件rom刷机包_华为Mate2系统强刷升级包
- 远程连接服务器的命令工具,windows系统如何实现远程命令?远程命令工具您选哪个?...
- 全面保护个人电脑中的宝贵数据和文件(转)
- 家用电脑设置成小程序服务器,电脑微信小程序设置全屏的方法是什么
- 35、ubuntu20.04搭建瑞芯微的npu仿真环境和测试rv1126的Debain系统下的yolov5+npu检测功能以及RKNN推理部署以及RTSP视频流解码
- 基于单片机的红外遥控密码锁系统设计(#0407)
- 安卓角色扮演游戏源码_角色扮演类安卓手游排行榜 热门手游推荐
热门文章
- java jdk实现快速排序_Java实现快速排序过程分析
- 《随机过程》布朗运动理论中的两个反常问题
- 每日一笑 | 坐牢吗?学编程那种~
- 每日一笑 | 你知道程序媛最“大”的烦恼是什么吗?
- 讲100个科学道理,不如做这些有趣的理科实验!
- 备战美赛,这些你应该知道的知识点
- jpa 默认生成sql语句_springboot-jpa自动创建数据库表
- php-fpm 超时,PHP超时的坑
- 浙江省2021年英语高考成绩查询,浙江高考成绩查询、志愿填报时间公布!
- 10kv电压互感器型号_电压互感器型号大全