当前位置: 首页 > news >正文

网站规划建设与推广网站备案 关闭

网站规划建设与推广,网站备案 关闭,义乌网站建设优化推广,工作感悟的句子洛谷P3067 [USACO12OPEN] Balanced Cow Subsets G 题目大意 我们定义一个奶牛集合 S S S是平衡的,当且仅当满足以下两个条件: S S S非空 S S S可以被划分为两个集合 A , B A,B A,B,满足 A A A里的奶牛产量之和等于 B B B里的牛奶产量之和 …

洛谷P3067 [USACO12OPEN] Balanced Cow Subsets G

题目大意

我们定义一个奶牛集合 S S S是平衡的,当且仅当满足以下两个条件:

  • S S S非空
  • S S S可以被划分为两个集合 A , B A,B A,B,满足 A A A里的奶牛产量之和等于 B B B里的牛奶产量之和

现在给定大小为 n n n的奶牛集合 S S S,询问它有多少个子集是平衡的。

1 ≤ n ≤ 20 , 1 ≤ a i ≤ 1 0 8 1\leq n\leq 20,1\leq a_i\leq 10^8 1n20,1ai108


题解

前置知识:折半搜索(meet in the middle)

我们考虑枚举 S S S的子集 S ′ S' S,在枚举子集 S ′ S' S中的每个子集来判断 S ′ S' S是否平衡。每个奶牛有三种情况:不在 S S S中,在 S S S中但不在 S ′ S' S中,在 S S S中且在 S ′ S' S中。如果枚举每种情况的话,时间时间复杂度是 O ( 3 n ) O(3^n) O(3n)的,我们考虑优化。

我们可以用折半搜索,将所有奶牛分为两个部分。

设前一部分中划分到集合 A A A的元素的值之和为 a a a,划分到集合 B B B的元素的值之和为 b b b

设后一部分中划分到集合 A A A的元素的值之和为 c c c,划分到集合 B B B的元素的值之和为 d d d

那么, a + c = b + d a+c=b+d a+c=b+d,移项的 a − b = c − d a-b=c-d ab=cd

我们先处理出前一部分的 a − b a-b ab,然后对于每一个 c − d c-d cd,在前面处理出的 a − b a-b ab中查找与 c − d c-d cd相等的并判断这两部分构成的集合是否是平衡的,是的话就更新答案即可。

处理前一部分和后一部分的时间复杂度都为 O ( 3 n / 2 ) O(3^{n/2}) O(3n/2),合并的时间复杂度为 O ( n 3 n ) O(n3^n) O(n3n),所以总时间复杂度为 O ( n 3 n ) O(n3^n) O(n3n)

code

#include<bits/stdc++.h>
using namespace std;
int n,cnt=0,ans=0,a[25],z[1<<20];
map<int,int>mp;
vector<int>v[1<<20];
void dfs1(int t,int sum,int now){if(t==n/2+1){if(!mp[sum]) mp[sum]=++cnt;v[mp[sum]].push_back(now);return;}dfs1(t+1,sum+a[t],now|(1<<t-1));dfs1(t+1,sum-a[t],now|(1<<t-1));dfs1(t+1,sum,now);
}
void dfs2(int t,int sum,int now){if(t==n+1){int tmp=mp[sum];if(tmp)for(int i=0;i<v[tmp].size();i++){z[v[tmp][i]|now]=1;}return;}dfs2(t+1,sum+a[t],now|(1<<t-1));dfs2(t+1,sum-a[t],now|(1<<t-1));dfs2(t+1,sum,now);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}dfs1(1,0,0);dfs2(n/2+1,0,0);for(int i=1;i<1<<n;i++) ans+=z[i];printf("%d",ans);return 0;
}
http://www.yayakq.cn/news/291491/

相关文章:

  • 网站建设与推广工资珞珈学子网站建设
  • 电玩网站开发狠狠做狠狠干免费网站
  • 前端怎么接私活做网站要怎么做网站
  • 网站的界面设计服装品牌网站开发php
  • 肇庆建设局网站网站红蓝色配色分析
  • 网站如何做超链接电子商务网站开发课程设计论文
  • 网站子目录安装dedecms导致网页布局混乱的解决方法深圳人力资源网求职
  • 智能网站搭建网版制作厂家
  • three.js做的酷炫网站出入兰州最新通知今天
  • 字体图标网站知名的中文域名网站有哪些
  • 网页版式设计欣赏一个网站如何优化
  • 网站开发公司哪个好网站建设公司调研汇报ppt
  • 大连的网站建设东莞网站建设选择菲凡网络
  • 有那些猎头做单的网站wordpress黑色主题下载
  • 只做网站不做app策划公司介绍
  • 品牌网站建设知名大蝌蚪重庆网站建设公司
  • 网站品牌建设建议招代理
  • 响应式手机模板WordPress佛山网站建设及优化公司
  • 重庆企业网站推广策略php网站开发学习
  • 网站公司网站定制怎样建设一个好的企业网站
  • 什么电脑做网站前段用wordpress写文章怎么更换编辑器
  • 合肥设计网站网站建站 优化推广
  • 外贸网站代运营工信部网站备案平台
  • wordpress在线邮箱北京seo包年
  • 怎样做网站流量学校校园网站建设必要性
  • 湖南智能网站建设费用群晖 同步 wordpress
  • 建站之星平台wordpress分页条目
  • t恤定制网站哪个好建网站的公司 快云
  • 对于给不良网站发律师函如何做搭建网站服务器多少钱
  • 成都电商网站开发网站开发项目视频教程