P2431 正妹吃月饼

题目描述

今天是中秋节。\(uim\)带来了一堆大小不同且味道各异的月饼。

这些月饼的质量分别是\(1g\),\(2g\),\(4g\),\(8g\),\(16g\)....后面一个是前面的2倍。每种只有一个。

uim让正妹随便吃。

正妹希望尝试尽可能多的口味,所以会吃尽可能多数量的月饼(不是重量)。而且她的确有些饿了,至少总共要吃掉\(A\) \(g\)的月饼才能满足。

然而正妹怕长胖,所以吃月饼不能合计超过\(B\) \(g\)。

她希望知道自己最多能吃多少个月饼

输入输出格式

输入格式:

两个数,\(a,b\)

输出格式:

正妹能吃到最多的数量

说明

30%数据,\(A,B<=1000\)

60%数据,\(A,B<=100000\)

100%数据,\(A,B<=2^{63}-1\)


我们当然不可以直接枚举,(其实枚举也可以跑过)

把\(B\)进行二进制拆分以后,对于每个位的1,我们可以把它去掉,然后直接把比它低的位全置1,从高到低枚举1,当第一次产生的新数比\(A\)大时,贪心的去想,就是答案了。

积累了一个错误点:1<<n

1<<n 会爆掉int!!! 最好搞个变量one来弄


Code:

#include <cstdio>
#define ll long long
ll a,b;
ll max(ll x,ll y){return x>y?x:y;}
ll cal(ll x)
{ll cnt=0;while(x) x-=x&-x,cnt++;return cnt;
}
int main()
{scanf("%lld%lld",&a,&b);ll tmp=b,len=0,ans=0;while(tmp) len++,tmp>>=1;ans=max(cal(b),ans);ll one=1;for(ll i=len;i;i--){if((b>>i-1)&1){ll t=b^(one<<i-1);t|=(one<<i-1)-1;if(t>=a)ans=max(cal(t),ans);}}printf("%lld\n",ans);return 0;
}

2018.7.11

转载于:https://www.cnblogs.com/butterflydew/p/9294480.html

洛谷 P2431 正妹吃月饼 解题报告相关推荐

  1. 洛谷P2431正妹吃月饼

    刷题之路-数论 洛谷P2431正妹吃月饼 传送门 题目描述 做题思路 将a转换成二进制,然后从最小位开始,对每一位进行判断:若为0,则转换为1,若转换后大于b,则结束,否则继续.最后对a中的1的个数进 ...

  2. 洛谷 P2431 正妹吃月饼

    题目描述 今天是中秋节.uim带来了一堆大小不同且味道各异的月饼. 这些月饼的质量分别是1g,2g,4g,8g,16g....后面一个是前面的2倍.每种只有一个. uim让正妹随便吃. 正妹希望尝试尽 ...

  3. P2431 正妹吃月饼

    P2431 正妹吃月饼 求给定区间二进制1的个数最多的数 即:max{popcount(i)},i∈[l,r]max\{popcount(i)\},i\in[l,r]max{popcount(i)}, ...

  4. P2431 正妹吃月饼 [位运算]

    传送门 题意 : 求l-r之间所有数 , 表示为2进制1最多的有几个 考虑贪心 , 每次将l第一个不为0的加1 , 大于r时停止 这里有一个玄学的操作 , l = l|(l+1) , 就可以实现将第一 ...

  5. 中秋特辑--洛谷题目-P2431【正妹吃月饼】

    中秋特辑-洛谷题目讲解 P2431 正妹吃月饼 又快到了一年一次的中秋节了,也不知道大家有没有去吃月饼,嘿嘿,我最喜欢云腿月饼老好吃了. 虽然是到了中秋节,但是我们依然要刷题来复习和提高自己欸. 现在 ...

  6. luogu2431 正妹吃月饼

    题目大意 求一个正整数集合\(K\),使得\(\sum_{k\in K}2^k\in[A,B]\),且\(|K|\)最大.\(A,B\)大小在long long范围内. 思路 \(\sum_{k\in ...

  7. 【数论】[luoguP2431]正妹吃月饼

    题目 很少做这种二进制的题 感觉很陌生 以后要多练练 感觉位运算好绕 把a二进制拆分 然后从最低位开始找 如果当前位是0的话 就判断一下把它变成1之后是不是比b小 小的话就变 有点贪心思想 代码如下 ...

  8. 洛谷 P3797 妖梦斩木棒 解题报告

    P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做 ...

  9. 洛谷 P3332 [ZJOI2013]K大数查询 解题报告

    P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...

最新文章

  1. 微信十年,张小龙下一步要干什么?
  2. 在Azure上创建MYSQL服务
  3. [BJDCTF2020]EzPHP 1
  4. [BUUCTF-pwn]——mrctf2020_shellcode_revenge(可见字符shellcode)(内涵peak小知识)
  5. Python(5)-注释
  6. 紫书 习题8-14 UVa 1616(二分+小数化分数+精度)
  7. python入门需要有什么基础?
  8. 外贸常用术语_外贸常用贸易术语之间,要这么换算……
  9. [转载] [转载] python反三角函数arctan_Python numpy.arctan() 使用实例
  10. UCD的产品设计原则
  11. 打造自己的 PTM!新词挖掘+预训练
  12. java加入md5_javamd5加密解密
  13. 联想微型计算机如果进入BIos,联想怎么进入bios 【处理方法】
  14. 在线富文本编辑器-基于Web的HTML编辑器大全(二)
  15. 【音频编码】AAC编码之FDK AAC
  16. ManjaroArch 自动挂载NTFS分区
  17. 获取Json对象中Json数组中的一个Json对象
  18. 利用VBScript连接mysql数据库_过路老熊_新浪博客
  19. html 多张图片自动滚动,JS实现图片的不间断连续滚动的简单实例
  20. 阿里云物联网平台添加网关设备和子设备

热门文章

  1. 使用Vue做一个可自动拼图的拼图小游戏(二)
  2. micro focus cobol 文件大小限制
  3. Unity+ET6.0网络框架的网络开发基础理论
  4. fft之后求模值和相位_50Hz交流信号经ADC在一个周期采样有限个点后,怎么用FFT变换求得有效值、幅值和相位等?...
  5. 电池容量工作时间如何计算
  6. STM32 HAL库开发学习笔记: USART1串口通讯(中断方式) IDE-STM32CubeIDE
  7. c语言程序功能作用是什么,C语言中rewind函数的作用是什么?
  8. jfinal 微信授权登录
  9. 编译器LLVM-MLIR-Intrinics-llvm backend-instruction
  10. 学生管理系统调试--实时错误(实时错误‘3021’)