首页 > 试题广场 >

Tokitsukaze and Colorful Chess

[编程题]Tokitsukaze and Colorful Chess
  • 热度指数:1556 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
Tokitsukaze 要在一个 n \times n 的棋盘上摆放棋子。她有 a 个红色的棋子和 b 个蓝色的棋子,要求任意两个相同颜色的棋子上下左右四个方向不相邻,允许棋盘上留有不放棋子的空格子。

Tokitsukaze 想知道棋盘的边长 n 至少多大,才能摆放下 a 个红色的棋子和 b 个蓝色的棋子。

输入描述:
第一行包含一个整数 T (1 \leq T \leq 10^5) --- 测试数据的组数。

对于每组测试数据:

第一行包含两个整数 a, b (0 \leq a,b \leq 10^9, a+b > 0) --- 两种颜色的棋子数。


输出描述:
对于每组测试数据,输出一行,每行包含一个整数表示答案。
示例1

输入

2
4 5
0 6

输出

3
4

说明

第一组测试数据,我们只能这样摆:

第二组测试数据,我们可以这样摆:


头像 Zvelig1205
发表于 2026-03-11 14:15:43
数学题 注意到单个颜色最多只能填充矩阵的一半。所以有 解得 但是当 和 相等时,会出现类似 的特殊情况,即此时算出来为 ,但实际上 。 此时特判即可。 代码 #include <bits/stdc++.h> using namespace std; void _() { 展开全文
头像 Lambda_L
发表于 2026-03-11 00:44:33
题解:最小棋盘边长问题题目分析问题核心给定红棋数量 a 和蓝棋数量 b,需要找到最小的 n,使得 n×n 棋盘能满足:摆放 a 个红棋和 b 个蓝棋;任意两个同色棋子上下左右不相邻;棋盘可留空。关键结论要满足摆放条件,需同时满足两个核心约束:总容量约束:n² ≥ a + b(棋盘总格子数需能放下所有 展开全文
头像 pandaC222
发表于 2026-03-11 13:08:23
注意到,本题用二分解决: #include<bits/stdc++.h> using namespace std; #define int long long #define ld long double #define debug(x) cerr << #x << 展开全文
头像 憨憨的竹林
发表于 2026-03-11 00:21:22
一个大小为n*n的棋盘,在满足题目条件的情况下,很显然最多能摆n / 2个x棋子和n - n / 2个y棋子(其中x表示a,b棋子中较少的那类棋子,y表示a,b棋子中较多的那类棋子),很显然,当一个大小为ans*ans的棋盘能满足我们的题目条件时,那么大小为(ans+1)*(ans+1)的棋盘一定也 展开全文
头像 蒟蒻果冻01
发表于 2026-03-11 00:30:48
直接想到这是利用了国际象棋的棋盘的性质,黑格子互不相邻,白格子也是,于是一个面积为的矩形棋盘最多可以容纳个第一种棋子,以及个第二种棋子。按照这个规律,二分即可。注意二分的量是正方形的边长,以及乘法不要越int的界,而不是面积。C++代码在图片下面: #include <iostream> 展开全文
头像 BeauWill
发表于 2026-03-11 04:06:14
方法一:二分答案估一下二分的范围,a + b <= 2E9,那么n二分的上界限定到ceil(sqrt(2E9))即可,我这里直接取了45000,它的平方也不会爆int;由于a + b > 0,那么二分的下界即为1。思考check函数,观察样例和说明,发现边长为n的棋盘,最多可以同时放下一 展开全文
头像 AliLexiWalker
发表于 2026-03-11 20:11:43
每种颜色最多放 个,总数不能超过 个。 因此只要让 同时不小于 和 。 void solve(){ ll a,b;cin>>a>>b; ll need=max(a+b,2*max(a,b)-1); ll n=sqrt(need); if(n* 展开全文
头像 爱吃鱼的小冤种被加薪
发表于 2026-03-11 20:32:54
#include <iostream> #include<vector> using namespace std; bool check(int n,long long a,long long b){ long long total=(long long)n*n; 展开全文
头像 此在Dasein
发表于 2026-03-11 03:32:21
1. 数学模型:二分图视角 棋盘是一个经典的二分图。我们可以根据坐标和的奇偶性将所有格子分为两组: 组 :所有满足 为偶数的格子,数量为 。 组 :所有满足 为奇数的格子,数量为 。 二分图的性质决定了:同组内的任意两个格子都不相邻。 要使 个红色棋子和 个蓝色棋子满足互不相邻且位置不重 展开全文
头像 chenlan114
发表于 2026-03-11 11:17:18
#include<bits/stdc++.h> using namespace std; using ll=long long; const ll N=1e5; ll pre[N]; int main(){ ios::sync_with_stdio(0),cin.tie(0), 展开全文