洛谷 P2431 正妹吃月饼 解题报告
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 正妹吃月饼 解题报告相关推荐
- 洛谷P2431正妹吃月饼
刷题之路-数论 洛谷P2431正妹吃月饼 传送门 题目描述 做题思路 将a转换成二进制,然后从最小位开始,对每一位进行判断:若为0,则转换为1,若转换后大于b,则结束,否则继续.最后对a中的1的个数进 ...
- 洛谷 P2431 正妹吃月饼
题目描述 今天是中秋节.uim带来了一堆大小不同且味道各异的月饼. 这些月饼的质量分别是1g,2g,4g,8g,16g....后面一个是前面的2倍.每种只有一个. uim让正妹随便吃. 正妹希望尝试尽 ...
- P2431 正妹吃月饼
P2431 正妹吃月饼 求给定区间二进制1的个数最多的数 即:max{popcount(i)},i∈[l,r]max\{popcount(i)\},i\in[l,r]max{popcount(i)}, ...
- P2431 正妹吃月饼 [位运算]
传送门 题意 : 求l-r之间所有数 , 表示为2进制1最多的有几个 考虑贪心 , 每次将l第一个不为0的加1 , 大于r时停止 这里有一个玄学的操作 , l = l|(l+1) , 就可以实现将第一 ...
- 中秋特辑--洛谷题目-P2431【正妹吃月饼】
中秋特辑-洛谷题目讲解 P2431 正妹吃月饼 又快到了一年一次的中秋节了,也不知道大家有没有去吃月饼,嘿嘿,我最喜欢云腿月饼老好吃了. 虽然是到了中秋节,但是我们依然要刷题来复习和提高自己欸. 现在 ...
- luogu2431 正妹吃月饼
题目大意 求一个正整数集合\(K\),使得\(\sum_{k\in K}2^k\in[A,B]\),且\(|K|\)最大.\(A,B\)大小在long long范围内. 思路 \(\sum_{k\in ...
- 【数论】[luoguP2431]正妹吃月饼
题目 很少做这种二进制的题 感觉很陌生 以后要多练练 感觉位运算好绕 把a二进制拆分 然后从最低位开始找 如果当前位是0的话 就判断一下把它变成1之后是不是比b小 小的话就变 有点贪心思想 代码如下 ...
- 洛谷 P3797 妖梦斩木棒 解题报告
P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做 ...
- 洛谷 P3332 [ZJOI2013]K大数查询 解题报告
P3332 [ZJOI2013]K大数查询 题目描述 有\(N\)个位置,\(M\)个操作.操作有两种,每次操作如果是\(\tt{1\ a\ b\ c}\)的形式表示在第\(a\)个位置到第\(b\) ...
最新文章
- 微信十年,张小龙下一步要干什么?
- 在Azure上创建MYSQL服务
- [BJDCTF2020]EzPHP 1
- [BUUCTF-pwn]——mrctf2020_shellcode_revenge(可见字符shellcode)(内涵peak小知识)
- Python(5)-注释
- 紫书 习题8-14 UVa 1616(二分+小数化分数+精度)
- python入门需要有什么基础?
- 外贸常用术语_外贸常用贸易术语之间,要这么换算……
- [转载] [转载] python反三角函数arctan_Python numpy.arctan() 使用实例
- UCD的产品设计原则
- 打造自己的 PTM!新词挖掘+预训练
- java加入md5_javamd5加密解密
- 联想微型计算机如果进入BIos,联想怎么进入bios
【处理方法】
- 在线富文本编辑器-基于Web的HTML编辑器大全(二)
- 【音频编码】AAC编码之FDK AAC
- ManjaroArch 自动挂载NTFS分区
- 获取Json对象中Json数组中的一个Json对象
- 利用VBScript连接mysql数据库_过路老熊_新浪博客
- html 多张图片自动滚动,JS实现图片的不间断连续滚动的简单实例
- 阿里云物联网平台添加网关设备和子设备
热门文章
- 使用Vue做一个可自动拼图的拼图小游戏(二)
- micro focus cobol 文件大小限制
- Unity+ET6.0网络框架的网络开发基础理论
- fft之后求模值和相位_50Hz交流信号经ADC在一个周期采样有限个点后,怎么用FFT变换求得有效值、幅值和相位等?...
- 电池容量工作时间如何计算
- STM32 HAL库开发学习笔记: USART1串口通讯(中断方式) IDE-STM32CubeIDE
- c语言程序功能作用是什么,C语言中rewind函数的作用是什么?
- jfinal 微信授权登录
- 编译器LLVM-MLIR-Intrinics-llvm backend-instruction
- 学生管理系统调试--实时错误(实时错误‘3021’)