首页 > Tokitsukaze and Colorful Chessboard
头像 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)的棋盘一定也 展开全文
头像 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* 展开全文
头像 蒟蒻果冻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的棋盘,最多可以同时放下一 展开全文
头像 空kk_
发表于 2026-03-11 18:19:11
经观察可得:n需要满足以下条件n^2>=a+b&&ceil(n^2/2)>=max(a,b) #include <iostream> #include<cmath> using namespace std; int T; void solve( 展开全文
头像 爱吃鱼的小冤种被加薪
发表于 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. 数学模型:二分图视角 棋盘是一个经典的二分图。我们可以根据坐标和的奇偶性将所有格子分为两组: 组 :所有满足 为偶数的格子,数量为 。 组 :所有满足 为奇数的格子,数量为 。 二分图的性质决定了:同组内的任意两个格子都不相邻。 要使 个红色棋子和 个蓝色棋子满足互不相邻且位置不重 展开全文

等你来战

查看全部