洛谷【P2431】正妹吃月饼
二进制前置技能:https://www.cnblogs.com/AKMer/p/9698694.html
题目传送门:https://www.luogu.org/problemnew/show/P2431
表示比起正妹更喜欢软妹
我们把\(a\)和\(b\)全部转换成二进制,就会得到两个长度为\(62\)的二进制串。这两个二进制串的第\(i\)位可能为\(0\)或\(1\),分别表示\(a\)和\(b\)的二进制表示下的第\(i\)位(从\(0\)开始)。
对于\(a,b\)相等,只有一种情况,我们就不考虑了。
然后,因为\(b>a\),所以必定有一位\(pos\),使得\(b\)二进制下第\(pos\)位为\(1\),\(a\)二进制下第\(pos\)位为\(0\)。即:
在\(a,b\)的二进制表示下,第\(62\)位到第\(pos+1\)位是一模一样的,后面的就不一样了。对于一样的,我们不予考虑。
我们设\(pos\)到\(1\)那一段的,\(b\)的为\(bob\),\(a\)的为\(boa\)。那么\(bob\)肯定是\(1.......\),\(boa\)肯定是\(0........\)。
显然,\(0111111...1111111\)肯定大于\(boa\)并且肯定小于\(bob\)。所以如果\(bob\)不是\(111111....111111\),那么答案就是\(011111....1111111\)。
时间复杂度:\(O(logn)\)
空间复杂度:\(O(logn)\)
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long
ll a,b,pos,ans,res;
bool boa[63],bob[63];
ll read() {
ll x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int main() {
a=read(),b=read();
for(int i=0;i<63;i++)
boa[i]=a&1,a>>=1;
for(int i=0;i<63;i++)
bob[i]=b&1,b>>=1;//转化二进制
for(pos=62;~pos;pos--)
if(bob[pos]>boa[pos])break;//找pos
for(int i=62;i>pos;i--)ans+=bob[i];//统计两个串一样部分1的个数
for(int i=pos;~i;i--)res+=bob[i];//统计bob后面1的个数
ans+=max(pos,res);//bob后面1的个数与一个0后全是1取max
printf("%lld\n",ans);
return 0;
}
洛谷【P2431】正妹吃月饼的更多相关文章
- 洛谷 P2431 正妹吃月饼 解题报告
P2431 正妹吃月饼 题目描述 今天是中秋节.\(uim\)带来了一堆大小不同且味道各异的月饼. 这些月饼的质量分别是\(1g\),\(2g\),\(4g\),\(8g\),\(16g\)....后 ...
- 题解 P2431 【正妹吃月饼】
假如做这道题想着用如下朴实的模拟,那肯定要WA至少4个点. #include <iostream> #include <cstdio> using namespace std; ...
- luogu2431 正妹吃月饼
题目大意 求一个正整数集合\(K\),使得\(\sum_{k\in K}2^k\in[A,B]\),且\(|K|\)最大.\(A,B\)大小在long long范围内. 思路 \(\sum_{k\in ...
- 洛谷P1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 洛谷 P1508 Likecloud-吃、吃、吃
P1508 Likecloud-吃.吃.吃 题目提供者JosephZheng 标签 动态规划 难度 普及/提高- 题目背景 问世间,青春期为何物? 答曰:"甲亢,甲亢,再甲亢:挨饿,挨饿,再 ...
- 洛谷1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- [洛谷 P3788] 幽幽子吃西瓜
妖梦费了好大的劲为幽幽子准备了一个大西瓜,甚至和兔子铃仙打了一架.现在妖梦闲来无事,就蹲在一旁看幽幽子吃西瓜.西瓜可以看作一个标准的球体,瓜皮是绿色的,瓜瓤是红色的,瓜皮的厚度可视为0.妖梦恰好以正视 ...
- 洛谷——1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- 洛谷——P1508 Likecloud-吃、吃、吃
P1508 Likecloud-吃.吃.吃 题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一 ...
随机推荐
- D - Invitation Cards
D - Invitation Cards Time Limit:8000MS Memory Limit:262144KB 64bit IO Format:%lld & %llu ...
- vue项目在APP禁止页面缩放
veu-cli自动生成的项目中,index.html中meta 标签内容如下,放在手机上浏览 是可以放大缩小的<meta name="viewport" content=&q ...
- 洛谷 P2051 [AHOI2009]中国象棋
题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中国象棋中炮的行走方式是 ...
- db2数据库还原
1.建好数据库比如TEST,建的时候将codepage设为与目标备份的codepage一致,比如: 437 2.然后备份一下刚建好的数据库,备份成功后,将20141127目录删除,然后将原来备份好的 ...
- Javaweb--- EL表达式 JSTL标准标签库
一.EL表达式(expression language): 语法 ${...} jsp中page指令有一个属性叫isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false 举个例 ...
- MySQL查看和修改字符集的方法
一.查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%';方法二:show variables like 'collat ...
- c++之helloworld与命名空间
首先在linux中需要安装g++编译器. 在中端输入 uname -a,可以查看版本信息. 输入g++,如果提示错误.则需要使用sudo apt-get install g++. #include&l ...
- 【leetcode刷题笔记】Substring with Concatenation of All Words
You are given a string, S, and a list of words, L, that are all of the same length. Find all startin ...
- 在macOS上使用***
写在教程之前[转] 本教程是通用的***在macOS上的使用教程.同时作为FzVPN的设备教程补充之一,适用于macOS. 若您在使用FzVPN,请在阅读前先仔细阅读FzVPN的使用帮助:>传送 ...
- Shiro-自定义realm
Shiro自定义 realm package com.zhen.realm; import org.apache.shiro.authc.AuthenticationException; import ...