1 条题解

  • 1
    @ 2022-9-2 22:34:16

    二分边长即可。

    因为黑白相间,边长为偶数时黑白数相同,边长为奇数时两者相差 11。检查一下较少的方块是否满足条件即可。

    #include<bits/stdc++.h>
    using namespace std;
    
    int b, w, ans;
    
    bool check(int x){
    	if(b > w)	swap(b, w);
    	return b > x * x / 2 - (x * x % 2);
    }
    
    int main(){
    	scanf("%d%d", &b, &w);
    	int l = 0, r = 200;//200不可能达到了,因为要40000块,一共才20000块 
    	while(l <= r){
    		int mid = (l + r) >> 1;
    		if(check(mid))	ans = mid, l = mid + 1;
    		else	r = mid - 1;
    	}
    	if(!ans)	printf("Impossible\n");
    	else	printf("%d\n", ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    2808
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    74
    已通过
    15
    上传者