列表

详情


NC249014. Tokitsukaze and Colorful Chessboard

描述

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

说明:

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

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


原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 397ms, 内存消耗: 1240K, 提交时间: 2023-03-21 20:26:30

#include <bits/stdc++.h>
using namespace std;
int main(){
	int t=0;
	cin>>t;
	while(t--){
		int a,b;
		cin>>a>>b;
        if(a!=b) cout<<ceil(sqrt(max(a,b)*2-1))<<"\n";
        else cout<<ceil(sqrt(max(a,b)*2))<<"\n";
	}
	return 0;
}

Python3 解法, 执行用时: 1359ms, 内存消耗: 6776K, 提交时间: 2023-03-11 21:06:10

from math import sqrt
t=int(input())
while t:
    t-=1
    a,b=map(int,input().split(" "))
    if(a==b):a=2*a;
    else:a=2*max(a,b)-1
    print(int(sqrt(a))+(sqrt(a)!=int(sqrt(a))))

pypy3 解法, 执行用时: 824ms, 内存消耗: 28476K, 提交时间: 2023-03-14 09:07:03

t=int(input())
while t:
    t-=1
    a,b=map(int,input().split())
    if(a==b):a=2*a;
    else:a=2*max(a,b)-1
    print(int(a**0.5)+(a**0.5!=int(a**0.5)))

上一题