P1652 圆
https://www.luogu.com.cn/problem/P1652
异或的一道好题
//异或的一道好题,有数学几何深度
#include <bits/stdc++.h>
using namespace std;
int n, ans, x[51], y[51], r[51], X1, Y1, X2, Y2;
int main()
{
cin >> n;
for(int i=1; i<=n; ++i){
cin >> x[i];
}
for(int i=1; i<=n; ++i){
cin >> y[i];
}
for(int i=1; i<=n; ++i){
cin >> r[i];
}
cin >> X1 >> Y1 >> X2 >> Y2;
for(int i=1; i<=n; ++i){
//判断第一个点在不在当前这个圆内
bool in1=sqrt((X1-x[i])*(X1-x[i])+(Y1-y[i])*(Y1-y[i]))<r[i];
//判断第二个点在不在当前这个圆内
bool in2=sqrt((X2-x[i])*(X2-x[i])+(Y2-y[i])*(Y2-y[i]))<r[i];
//如果两个点在同一个圆内,或者都不在这个圆内,则不需要经过圆就可以连在一起
//也就是异或1^1=0, 0^0=0
//如果有一个点在圆内,另一个点不在圆内,则必须要经过一个圆边
//也就是异或1^0=1, 0^1=1
ans+=in1^in2;
}
cout << ans;
return 0;
}