EOJ Monthly 2020.1 E. 数的变幻
题目链接:https://acm.ecnu.edu.cn/contest/247/problem/E/
这道题是cf原题: Codeforces Round #608 (Div. 2) E. Common Number
Cuber QQ 正在刷 EOJ 上的水题,他正在做的一道题目是这样的。
给定一个正整数 x :
- 如果 x 是奇数的话,则变幻成 x−1 ;
- 如果 x 是偶数的话,则变幻成 x*2 。
如此往复地执行这个操作,直到 x 变为 1 。
显然这对于 Cuber QQ 来说过于简单了。于是 Cuber QQ 根据这个发明了一个序列,称为变幻序列, x -变幻序列指的是,从 x 作为变幻的开始,一直变幻到 1 所构成的序列,例如 7 -变幻序列是 {7,6,3,2,1} ; 10 -变幻序列是 {10,5,4,2,1} 。
而现在 Cuber QQ 在纸上写出了所有 1 到 n 变幻序列,他分别统计了每一个数在这些序列中出现的次数,例如当 n=4 的时候,四个序列分别是 [1]={1},[2]={2,1},[3]={3,2,1},[4]={4,2,1} ,则 数 1 出现了 4 次,数 2 出现了 3 次 ,数 3 出现了 1 次 ,数 4 出现了 1 次。
现在 Cuber QQ 想知道最大的数 x 满足 x 在所有 1 到 n 变幻序列中至少出现了 k 次。
输入格式
第一行包含一个整数 T(1≤T≤10^4) ,表示数据组数。
对于每一组数据包含两个整数 n,k(1≤k≤n≤10^18) ,含义如题面所述。
输出格式
对于每一组数据,输出一行一个整数表示答案。
样例
4
4 1
4 2
4 3
4 4
4
2
2
1
#include <iostream>
#include <queue>
using namespace std;
typedef long long ll; ll t, n, k, l, r, mid, res; bool check(ll x)
{
ll ans = ;
queue<pair<ll, ll>>q;
if (x & ) // 奇数可以只能由 x 转移过来
q.push(make_pair(x, x));
else // 偶数还可以由 x+1 转移过来
q.push(make_pair(x, x + ));
while (!q.empty())
{
auto now = q.front();
q.pop();
ans += min(n, now.second) - now.first + ; //右边界必须在 n 内才有效
if ((now.first << ) <= n)
q.push(make_pair(now.first << , now.second << | )); // 可以转移得到 x 的范围为 [l<<1, r<<1|1]
}
return ans >= k;
} int main()
{
ios::sync_with_stdio(false);
cin >> t;
while (t--)
{
res = ;
cin >> n >> k;
l = , r = (n + ) >> ;
while (l + < r)
{
mid = (l + r) >> ;
if (check(mid << ))
l = mid;
else
r = mid;
}
if (check(l << | )) // 判断结果 +1 是否也成立
res = l << | ;
else
res = l << ;
cout << res << '\n';
}
return ;
}
EOJ Monthly 2020.1 E. 数的变幻的更多相关文章
- EOJ Monthly 2019.2 题解(B、D、F)
EOJ Monthly 2019.2 题解(B.D.F) 官方题解:https://acm.ecnu.edu.cn/blog/entry/320/ B. 解题 单测试点时限: 2.0 秒 内存限制: ...
- 【EOJ Monthly 2018.7】【D数蝌蚪】
https://acm.ecnu.edu.cn/contest/92/problem/D/ D. 数蝌蚪 Time limit per test: 2.0 seconds Memory limit: ...
- EOJ Monthly 2018.7
准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...
- EOJ Monthly 2018.4
A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...
- EOJ Monthly 2018.11 猜价格 (模拟)
分三种情况: 1.k=1.此时每次都说反话,反着二分即可. 2.1<k <= n.那么在前n次问答中一定会出现一次错误,通过不断输出1找出那个错误发生的位置(若回答是>那这就是错误) ...
- EOJ Monthly 2019.2 (based on February Selection) F.方差
题目链接: https://acm.ecnu.edu.cn/contest/140/problem/F/ 题目: 思路: 因为方差是用来评估数据的离散程度的,因此最优的m个数一定是排序后连续的,所以我 ...
- EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】
任意门:https://acm.ecnu.edu.cn/contest/140/problem/D/ D. 进制转换 单测试点时限: 2.0 秒 内存限制: 256 MB “他觉得一个人奋斗更轻松自在 ...
- EOJ Monthly 2019.1 唐纳德先生与这真的是签到题吗 【数学+暴力+multiset】
传送门:https://acm.ecnu.edu.cn/contest/126/ C. 唐纳德先生与这真的是签到题吗 单测试点时限: 6.0 秒 内存限制: 1024 MB 唐纳德先生在出月赛的过程中 ...
- EOJ Monthly 2019.3 A
A. 钝角三角形 单点时限: 3.0 sec 内存限制: 512 MB QQ 小方以前不会判断钝角三角形,现在他会了,所以他急切的想教会你. 如果三角形的三边长分别为 a, b, c (a≤b≤c), ...
随机推荐
- java#StringBuffer&StringBuilder
StringBuffer A thread-safe, mutable sequence of characters. A string buffer is like a String, but ca ...
- 桌面右键没有新建txt文本文档的快捷方式、
先新建一个word文档,然后将后缀名改为 TXT. 在里面输入:Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.txt] @=&quo ...
- 19 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路:一个栈存普通元素,一个最小栈存放目前位置最小的元素,只在压入的时候判断是否为空以及最小元素,其他情况正常处理 ...
- mysql 数据库函数入门
- Win 10 开启FTP与配置
转载:https://blog.csdn.net/qq_34610293/article/details/79210539 可能出现的问题是:设置共享文件,无法被共享.极大的可能原因是电脑防火墙的问题 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:StringBuffer
public class StringBufferDemo01{ public static void main(String args[]){ StringBuffer buf = new Stri ...
- 矿难已经过去,NVIDIA将高举光追大旗!
在去年8月推出支持光线追踪技术的Turing图灵GPU之前,显卡市场差不多沉沦了两年,很大一个原因就是2017到2018年初的数字货币市场爆发,矿卡市场取代了游戏卡市场成为增长点,那一年多显卡厂商的日 ...
- [LeetCode] 928. Minimize Malware Spread II 最大程度上减少恶意软件的传播之二
(This problem is the same as Minimize Malware Spread, with the differences bolded.) In a network of ...
- reduce()、filter()、map()、some()、every()、...展开属性
reduce().filter().map().some().every()....展开属性 这些概念属于es5.es6中的语法,跟react+redux并没有什么联系,我们直接在https:// ...
- Golang go-gin 注册路由
代码实现 main.go package main import ( "fmt" "github.com/jihite/go-gin-example/pkg/settin ...