每日一题--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;
}
相关推荐
hold?fish:palm4 分钟前
从源码到可执行文件:C++程序的编译过程
开发语言·c++
Tisfy9 分钟前
LeetCode 2685.统计完全连通分量的数量:DFS求每个连通块的边点数
算法·leetcode·深度优先··题解·连通图·全连通分量
海石19 分钟前
1次遍历,空间复杂度击败100%,时间复杂度击败85%
算法·leetcode
lingran__29 分钟前
C++_STL简介
开发语言·c++
南国韭菜39 分钟前
【无标题】
c++·qt
L歪歪君1 小时前
Apache Doris全链路性能优化实战指南:从架构设计到生产落地
java·开发语言·算法
m0_466525291 小时前
从“算法内卷”到“可信易用” 东软多模态医学人工智能平台开启无代码科研新时代
人工智能·算法
没用的阿_吉1 小时前
vs2022offline 生成
c++
码少女1 小时前
数据结构——冒泡排序及优化
数据结构·算法·排序算法
梦回江东2 小时前
ansible中的主机清单
算法