博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 8VC Venture Cup 2016 - Elimination Round C. Lieges of Legendre
阅读量:4330 次
发布时间:2019-06-06

本文共 726 字,大约阅读时间需要 2 分钟。

题意:给n,m表示有n个为2的倍数,m个为3的倍数;问这n+m个数不重复时的最大值 最小为多少?

数据:(0 ≤ n, m ≤ 1 000 000, n + m > 0)

ps:很水的题,主要是策略;

思路:由于里面每隔6就会重复一次,不好直接模拟,并且模拟的效率很低,那就二分吧!二分即上界为2单独的最大倍数与3单独时的最大倍数之和,下界为前面二者的max;之后利用判断是否mid/2 >= n && mid/3 >= m && mid/2 + mid/3 - mid/6 >= n + m 即可二分;这样running 就是log(n)了;注意最后还要判断ans是否为2|3的积即可;

#include
using namespace std;int main(){ int n,m; scanf("%d%d",&n,&m); int l = max(n*2,m*3),r = n*2 + m*3,ans = 0; while(l <= r){ int mid = l + r >> 1; if(mid/2 >= n && mid/3 >= m && mid/2 + mid/3 - mid/6 >= n + m) ans = mid,r = mid - 1; else l = mid + 1; } if(ans%2 != 0 && ans%3 != 0) ans++; printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/hxer/p/5222021.html

你可能感兴趣的文章
hdu1067
查看>>
2019年春季学期第四周作业
查看>>
公司web安全等级提升
查看>>
[BZOJ3224]普通平衡树(旋转treap,STL-vector)
查看>>
C++ - 派生类强制转换为基类
查看>>
存储过程优缺点
查看>>
【题解】[NOIP模拟题]我要的幸福-C++
查看>>
html5手势原理知识
查看>>
php中文转拼音的代码
查看>>
自我修复
查看>>
Leetcode: Path Sum
查看>>
#python#将函数赋值给变量时的一些问题
查看>>
服务器 未能加载文件或程序集“XXXX”或它的某一个依赖项。试图加载格式不正确的程序。...
查看>>
linux 网络设备,网卡配置 ,相关
查看>>
vue16 自定义键盘属性
查看>>
global-results
查看>>
CF870A Search for Pretty Integers
查看>>
分布式一致性算法--Paxos
查看>>
EFCodeFirst示例
查看>>
C#正则表达式匹配
查看>>