CF199B 题解

思路

枚举每个圆半径 aa 和另一组中的圆环内外圆的半径 b,cb,c,设 xx 为圆心距 (x1x2)2+(y1y2)2\sqrt{(x_1-x_2)^2+(y_1-y_2)^2},若 a+cxa+c\le x,说明 aacc 没有相交,合法;若 acxa-c\ge x,则说明 aa 包含了 cc,合法;若 baxb-a\ge x,说明 bb 包含 aa,也合法。

思路

# include <bits/stdc++.h>
using namespace std;
int x_1, y_1, r_1, R_1, x_2, y_2, r_2, R_2;
double x;
int f (int& a, int& b, int& c) {
	return a + c <= x || x <= a - c || x <= b - a;
}
int main () {
	ios::sync_with_stdio (0);
	cin.tie (0);
	cout.tie (0);
	cin >> x_1 >> y_1 >> r_1 >> R_1 >> x_2 >> y_2 >> r_2 >> R_2;
	x = sqrt ((x_1 - x_2) * (x_1 - x_2) + (y_1 - y_2) * (y_1 - y_2));
	cout << f (r_1, r_2, R_2) + f (R_1, r_2, R_2) + f (r_2, r_1, R_1) + f (R_2, r_1, R_1);
	return 0;
}
posted @   sz_jinzikai  阅读(1)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示