【折半搜索】BZOJ2679(Usaco2012 Open)[Balanced Cow Subsets]题解
来源:互联网 发布:网络理财 富通贷 编辑:程序博客网 时间:2024/06/05 23:40
题目概述
给出
解题报告
如果直接枚举,状态有
但由于是选出若干个数,问这些数是否有合法方案,所以需要记录每种方案的状态,否则会算重复。
我秉承不用map的原则(狗屁嘞,明明就是偷懒用map发现超时)打了哈希表。
好像有dalao用two-pointer做啊……但是貌似被我cao了。
复杂度比较玄学,好像有复杂度稳定的正解,可以Orz Manchery。
示例程序
#include<cstdio>#include<vector>using namespace std;typedef long long LL;const int maxn=20,maxe=59049,MOD=999917,MAXINT=((1<<30)-1)*2+1;int n,a[maxn+5],ans;int E,lnk[MOD],nxt[maxe+5];LL son[maxe+5];vector<int> w[maxe+5];bool vis[1<<maxn];inline void Insert(LL x,int s){ for (int j=lnk[(x+=MAXINT)%MOD];j;j=nxt[j]) if (son[j]==x) {w[j].push_back(s);return;} son[++E]=x;w[E].push_back(s);nxt[E]=lnk[x%MOD];lnk[x%MOD]=E;}inline int Find(LL x){ for (int j=lnk[(x+=MAXINT)%MOD];j;j=nxt[j]) if (son[j]==x) return j; return 0;}void Dfs(int L,int R,int sum=0,int s=0){ if (L>R) return Insert(sum,s); Dfs(L+1,R,sum,s);Dfs(L+1,R,sum-a[L],s+(1<<L-1));Dfs(L+1,R,sum+a[L],s+(1<<L-1));}void Count(int L,int R,int sum=0,int s=0){ if (L>R) { for (int j=Find(-sum),i=0;i<w[j].size();i++) if (!vis[s|w[j][i]]) vis[s|w[j][i]]=true,ans++; return; } Count(L+1,R,sum,s);Count(L+1,R,sum-a[L],s+(1<<L-1));Count(L+1,R,sum+a[L],s+(1<<L-1));}int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); scanf("%d",&n);for (int i=1;i<=n;i++) scanf("%d",&a[i]); return Dfs(1,n>>1),Count((n>>1)+1,n),printf("%d\n",ans-1),0;}
阅读全文
0 0
- 【折半搜索】BZOJ2679(Usaco2012 Open)[Balanced Cow Subsets]题解
- bzoj2679 [Usaco2012 Open]Balanced Cow Subsets折半搜索
- bzoj 2679: [Usaco2012 Open]Balanced Cow Subsets 折半搜索
- BZOJ 2679: [Usaco2012 Open]Balanced Cow Subsets meet_in_the_middle / 折半搜索
- 【BZOJ】2679 [Usaco2012 Open]Balanced Cow Subsets 折半搜索+状压
- [Meet In Middle] BZOJ 2679 [Usaco2012 Open]Balanced Cow Subsets
- JZOJ2935. 【USACO Open 2012 Gold Division】Balanced Cow Subsets
- USACO2011Open Gold Balanced Cow Subsets
- [USACO 2012OPEN] Balanced Cow Subsets(meet in the middle + DFS)
- 【bzoj2590】[Usaco2012 Feb]Cow Coupons
- 【浅谈折半搜索】POJ1186[方程的解数]题解
- 【bzoj3012】[Usaco2012 Dec]First(题解)
- LeetCode 题解(164): Subsets
- LeetCode题解:Subsets
- LeetCode题解:Subsets II
- 【题解】Leetcode.78.Subsets
- Leetcode 78. Subsets题解
- Lintcode17 Subsets solution 题解
- 黑莓公布第二季度财报,软件带动收入增长
- 逐渐发声的腾讯云 发布第三代云服务器矩阵与异构计算
- 四大趋势六大场景,麦肯锡预测汽车行业新革命
- [Asp.net]DataTable排序
- org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
- 【折半搜索】BZOJ2679(Usaco2012 Open)[Balanced Cow Subsets]题解
- Oracle中concat与||区别(以及与mysql中concat函数区别)
- 数据库-4 Hash算法
- codeforces
- hdu 5135 Little Zu Chongzhi's Triangles(贪心+求三角形面积)
- 结构体
- 2018 年,AI 芯片也许会出现在每一款旗舰智能手机上
- 更值得购买的全面屏手机,vivo X20全通路首销告捷
- Qualcomm骁龙和vivo共同携手NBA 开启体育跨界新势力