每日一题--Tokitsukaze and Colorful Chessboard【二分】

题目


解题思路

今天这道题还算简单,看一遍大概就有思路,读一遍题后大致能想出来是一个区间查找问题,最适合用二分去做,这道题恰好适合学习了二分的基础的小伙伴来练手,

肯定是每个相隔一个放棋子能最大化利用空间,这样能在满足条件的基础上最大包容的其中一种棋子数量是(nn+1)/2(向上取整)
那么这道题就是在满足**n
n>=a+b**,且**(n*n+1)/2>=max(a,b)**,首先a,b范围0~1000000000,那么至少边长为50001的方格能放得下a+b,我们用二分答案来做,范围也就出来了,利用模版一找最小值n.

二分不熟悉的小伙伴请看这篇:二分查找&二分答案【模板+例题】带你精通二分!

代码实现

cpp 复制代码
void solve()
{
	int a,b;cin>>a>>b;
	int mx=max(x,y);
	int l=1,r=50005;
	while(l<r)
	{
		int mid=l+r>>1;
		if(mid*mid>=a+b&&(mid*mid+1)/2>=mx)r=mid;
		else l=mid+1;
	}
	cout<<l<<endl;
}
相关推荐
通信小呆呆1 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0442 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
小小工匠2 小时前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾3 小时前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..3 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅10053 小时前
【leetcode】88.合并两个有序数组js
算法
один but you4 小时前
constexpr函数
c++
生成论实验室4 小时前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres8214 小时前
算法复键——树状数组
数据结构·算法