小马哥有 \(n\) 杯盐水,第 \(i\) 杯有 \(a_i\)单位的盐和 \(b_i\)单位的水。小马哥很无聊,于是他想知道有多少种这 \(n\) 杯盐水的非空子集,倒在一起之后盐和水的比是 \(\frac{x}{y}\),范围\(2<n<35\)

这道题比赛没A出来,要是A了就能两个人分900块辣
//隔了一天才突然想到,我太菜了

折半枚举过程如下
分两个桶A,B,分别装前一半杯子的子集和后一半杯子的子集
先暴力枚举A桶所有组合,装入一个排好序的vec,这部分时间复杂度是\(O(2^{n/2}log_22^{n/2})\)
再暴力枚举B桶的方案,二分找出能和A匹配的方案个数,这部分时间复杂度也是\(O(2^{n/2}log_22^{n/2})\)
最后统计A、B自身符合条件的方案就行了
至于如何二分,可以考虑假设A的某个集合本身不能匹配,
设该状态盐总和为\(a\),水总和为\(b\),那么就有\(ay≠bx\)
设B桶枚举的集合中盐总和为\(c\),水总和为\(d\),那么有\((a+c)y=(b+d)x\)
简单移项后得出\(ay-bx=dx-cy\)
按这条式子就能二分了

PS.实现是dalao写的,自己写的翻车了,思路没错..

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;const int maxn = 40;
const int maxm = (1<<18)+5;int elema[maxn],elemb[maxn];
int zka[maxm],zkb[maxm];void ZHANGKAI(int val[],int elem[],int size)
{val[0] = 0;for(int i = 1;i<=size;i++){int st = 1<<(i-1);int ed = 1<<i;for(int k = st;k<ed;k++){val[k] = val[k-st]+elem[i];}}
}int main()
{int kase;cin>>kase;for(int i = 0;i<kase;i++){int n,x,y;int a,b;cin>>n>>x>>y;int half = n>>1;for(int i = 1;i<=half;i++){cin>>a>>b;elema[i] = y*a-x*b;}for(int i = half+1;i<=n;i++){cin>>a>>b;// elemb[i-half] = elema[i];elemb[i-half] = x*b-y*a;}ZHANGKAI(zka,elema,half);ZHANGKAI(zkb,elemb,n-half);int sizeb = (1<<(n-half));sort(zkb+1,zkb+sizeb);long long ans = 0;int end = 1<<half;for(int i = 1;i<end;i++){int*a = lower_bound(zkb+1,zkb+sizeb,zka[i]);int*b = upper_bound(zkb+1,zkb+sizeb,zka[i]);int k = b-a;ans+=k;}for(int i = 1;i<end;i++) if(zka[i]==0) ans++;for(int i = 1;i<sizeb;i++) if(zkb[i]==0) ans++;cout<<ans<<endl;}return 0;
}

转载于:https://www.cnblogs.com/caturra/p/8747390.html

18华工校赛 小马哥的超级盐水 折半枚举相关推荐

  1. zstu新生赛 Problem A: Baby Coins(折半枚举+二分)

    Problem A: Baby Coins Time Limit: 1 Sec Memory Limit: 128 MB Submit: 274 Solved: 29 Description Baby ...

  2. 思泰克IPO过会:上半年营收1.9亿 元禾璞华与赛富金钻是股东

    雷递网 雷建平 11月21日 厦门思泰克智能科技股份有限公司(简称:"思泰克")日前IPO过会,准备在深交所创业板上市.思泰克计划募资4亿元. 其中,1.38亿元用于思泰克科技园项 ...

  3. 案例分享|华医康道:超级链助力电子处方流转平台,让医疗服务触手可得

    文章作者:李剑峰 01 应用背景 现代医学诞生于19世纪中叶,以细菌被发现为标志.在这以前的传统医学主要以希波克拉底-盖伦的体液说和平衡论为代表(以及中医的阴阳五行学说),再往前就是巫医一体的原始自然 ...

  4. 诺华、赛诺菲、GSK、武田、卫材等旗下药品进入“2020年医保药品目录”

    12月28日,国家医疗保障局.人力资源和社会保障部公布<国家基本医疗保险.工伤保险和生育保险药品目录(2020年)>,将于明年3月1日起正式实施.目录内药品总数2800种,其中西药1426 ...

  5. 赛效:超级简历在线简历助手教您一键制作简历

    在找工作时,一份优秀的简历可以给你的阅历增添不少风采,很多求职者在应聘之前都会制作精美的简历,简历要怎么写更好呢?超级简历在线简历助手,可在线帮助大家设计简历,下面小编来手把手教您使用超级简历来制作个 ...

  6. 2015浙江理工校赛A 孙壕请一盘青岛大虾呗(简单搜索)

    题解 简单的DFS 代码 #include<cstdio> #include <queue> #include <cstring> #include <ios ...

  7. 四旋翼飞行器18——华科尔D10遥控器与APM飞控的飞行模式设置(还没搞懂)

    华科尔遥控器与apm飞行模式切换通道 http://bbs.5imx.com/forum.php?mod=viewthread&ordertype=1&tid=1035654 http ...

  8. 04.18 蜜汁dp赛

    这次的dp赛,成绩....我就不说了吧..意会即可. 其实这次的题不算很难,有几题我都是有思路的,但是由于各种各样的错误,总之,一题也没有写对. 第一题 马拉松 乍一看好像很简单,但是对我来说非常坑! ...

  9. 2018/3/18 noip模拟赛 20分

    T1 dp,特别裸特别简单,我放弃了写了个dfs. T2 树归,特别裸特别简单,我不会写. T3 贪心二分不知道什么玩意儿反正不会写就对了. 我是个智障 转载于:https://www.cnblogs ...

  10. 2022浙江理工校赛 问题 I: Tournament Seeding

    tag:[排序] . [配对问题].[枚举--逆向思维] 题目描述:略 得到过程: 对于一个题目中的数列,我们先尝试看看能不能排序:答案是可以(证明过程略). 我们得到,如下图的有序数列. ----- ...

最新文章

  1. foreign 磁盘阵列_服务器磁盘 foreign
  2. expdp / impdp 用法详解(Oracle)
  3. oracle9i用expdp导出全库,Linux下Oracle 11g数据库全库自动备份(EXPDP)
  4. 方法级权限控制-@Secured注解使用
  5. float浮动,定位
  6. 设计爬虫Hawk背后的故事
  7. Android之实现RecyclerView拖拽效果和固定部分元素不进行交换位置
  8. redis lettuce 超时_Spring Cache 操作 Redis 实现数据缓存(上)
  9. st7789 照片转数组软件_干货 | 新闻人实用软件安利
  10. @EnableWebMvc引发的swagger-ui.html的灾难
  11. python里isalpha_Python 2.7中isalpha 不支持 unicode
  12. 保存Google、Bing翻译的语音
  13. DISC职业性格测试附完整分析.doc
  14. CodeUp-1036 Problem B 镂空三角形
  15. 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Windows 7 怎么修复 Windows 中的 Wi-Fi 连接问题,我教你(六)...
  16. 词霸天下---词根227【-gress- = -grad- = -gred- = -gre(e)- 步,走】
  17. pdf转ppt在线转换网站
  18. win7旗舰版安装telnet,报错:打开程序包 Telnet Client 的更新 TelnetClient 失败。状态为: 0x80073712。解决方案
  19. 【每周CV论文推荐】StyleGAN人脸属性编辑有哪些经典论文需要阅读
  20. PHP 上传并压缩图片

热门文章

  1. iphone数据传输已取消怎么办_消失的3.5mm接口:厂商真好心取消3.5mm接口?其实大家全都是韭菜...
  2. php连接mysql代码+类_php连接mysql操作类
  3. 完全二叉树的叶子节点数公式_二叉树基础知识
  4. 图像频域增强:高通滤波器
  5. 阿里云云计算 11 ECS初体验-- 动手实验
  6. 获取最顶层的ViewController top ViewController swift
  7. 算法:Design Circular Deque(设计一个双端队列)
  8. java中的ioc和aop_IOC和AOP分别是什么?如何理解?
  9. KDD18 DIN Deep Interest Network for Click-Through Rate Prediction
  10. conda An unexpected error has occurred