选数 ssl 2669 优美的暴力
来源:互联网 发布:矩阵符号手写 编辑:程序博客网 时间:2024/06/10 06:20
题目大意
给出n个数a[i],现在可以在其中任意选出若干个数,问有多少种选择方案,使得这几个数可以分成两个和相等的集合。
分析
点一下dalao
code
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>#include<algorithm>using namespace std;struct arr{ int a,aa;}a[70000],b[70000];int f[100];int ff[20000000];int num_a;int num_b;int num,n;int ans=0;bool cmp(arr a,arr b){ return a.a<b.a;}int dfs1(int x,int num,int m){ if (x==(n/2+1)) { if (m==0) return 0; a[++num_a].a=num; a[num_a].aa=m; return 0; } for (int i=-1;i<=1;i++) { if ((i==1)||(i==-1)) dfs1(x+1,num+f[x]*i,m*2+1); if (i==0) dfs1(x+1,num+f[x]*i,m*2); }}int dfs2(int x,int num,int m){ if (x==(n+1)) { if (m==0) return 0; b[++num_b].a=num; b[num_b].aa=m; return 0; } for (int i=-1;i<=1;i++) { if ((i==1)||(i==-1)) dfs2(x+1,num+f[x]*i,m*2+1); if (i==0) dfs2(x+1,num+f[x]*i,m*2); }}int main(){ //freopen("number.in", "r", stdin); //freopen("number.out", "w", stdout); scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&f[i]); } dfs1(1,0,0); dfs2(n/2+1,0,0); sort(a+1,a+num_a+1,cmp); sort(b+1,b+num_b+1,cmp); int link_a=1,link_b=num_b,link_bb=num_b; for (link_a;link_a<=num_a;link_a++) { int k=0; while ((a[link_a].a+b[link_b].a>0)&&(link_b>0)) link_b--; link_bb=link_b; while ((a[link_a].a+b[link_b].a==0)&&(link_b>0)) { if (!ff[(a[link_a].aa<<(n/2+1))+b[link_b].aa]) ff[(a[link_a].aa<<(n/2+1))+b[link_b].aa]=1; else k++; link_b--; } ans=ans+(link_bb-link_b)-k; link_b=link_bb; } for (int i=1;i<=num_a;i++) if ((a[i].a==0)&&(ff[a[i].aa<<(n/2+1)]==0)) ans++,ff[a[i].aa<<(n/2+1)]=1; for (int i=1;i<=num_b;i++) if ((b[i].a==0)&&(ff[b[i].aa]==0)) ans++,ff[b[i].aa]=1; printf("%d",ans); fclose(stdin); fclose(stdout);}
阅读全文
1 0
- 选数 ssl 2669 优美的暴力
- 根 ssl 2668 优美的暴力
- HDU6127Hardchallenge(优美的暴力)
- HDU 5311 Hidden String (优美的暴力)
- 删除 纪中 1381 优美的暴力
- 输油管道 纪中 1432 优美的暴力
- 数码问题 纪中 1433 优美的暴力
- 优美数式
- HDU 2017 多校联合训练赛6 1008 6103 Kirinriki 优美的暴力
- 暴力的枚举法[奥数等式]
- 优美的祝词
- 优美的琴声
- 编写"优美"的SHELLCODE
- 优美的MTV动画片
- 优美的MTV动画片
- 优美的英语句子
- 优美的爱情
- 优美经典的短信
- 暑期时间表
- 训练总结8.7
- Hive企业优化
- Muduo库源码分析(7):线程池
- mybatis的基本使用
- 选数 ssl 2669 优美的暴力
- C#中操作图片出现资源被占用
- Statement、PreparedStatement、CallableStatement
- 2017今日头条秋招编程
- [Leetcode]problem 9之Palindrome Number
- spring boot打包时Unable to find a single main class的解决方法
- 关于背包问题的研究
- Objective-C内存管理基础
- 那些有趣/用的 Python 库