baekjoon 7869. λ μ
λ¬Έμ μΆμ²
ICPC > Regionals > NEERC Far-Eastern Subregional 2000 Fλ²
νμ΄
μ νμ΄ μ½κΈ° μ , μ΄ κΈμ μ½μ΄λ³΄μλκ±Έ μΆμ²λ립λλ€.
μ κΈκ³Ό κ°μ νμ΄λ₯Ό μ€λͺ
νκ³ μκ³ , κ°λ₯ν μ΄ν΄κ° μ¬μ΄ νμ΄λ₯Ό 보λκ² λμμ΄ λ κ² κ°μ μ¬λ¦½λλ€.
κ³ λ±νκ΅ μνμ μ λ°°μ λ€λ©΄ μ½κ² ν μ μλ λ¬Έμ μ
λλ€.
λ¬Έμ μμ λ μμ μ€μ¬κ³Ό λ°μ§λ¦λ§ μ£ΌκΈ° λλ¬Έμ, μ°μ λ μμ΄ κ΅μ°¨νλμ§λΆν° νμΈν΄μΌν©λλ€.
λ μμ μ€μ¬ μ¬μ΄μ 거리λ₯Ό μ΄μ©ν΄ κ΅μ°¨νμ§ μκ±°λ μμ ν ν¬ν¨λλ κ²½μ°λ₯Ό μ μΈνλ©΄, λλ¨Έμ§ λͺ¨λ κ²½μ°μμ λ μμ΄ κ΅μ°¨νλ€κ³ ν μ μμ΅λλ€.
μ°μ κ΅μ°¨νμ§ μκ±°λ ν¬ν¨λλ κ²½μ°λ₯Ό ꡬν΄λ΄ μλ€. λ§μ½ λ μμ μ€μ¬ μ¬μ΄μ κ±°λ¦¬κ° κ° μμ λ°μ§λ¦μ ν©λ³΄λ€ ν¬λ€λ©΄, λ μμ κ΅μ°¨νμ§ μμ΅λλ€.
λν λ μμ μ€μ¬ μ¬μ΄μ κ±°λΌκ° λ μμ λ°μ§λ¦μ μ°¨μ΄ λ³΄λ€ μλ€λ©΄, νλμ μμ΄ λ€λ₯Έ μ μμ μμ ν ν¬ν¨λλ κ²½μ°μ λλ€.
μ λ κ²½μ°λ₯Ό μ μΈν λλ¨Έμ§ κ²½μ°λ λ μμ΄ κ΅μ°¨νλ€κ³ λ³Ό μ μμ΅λλ€.
κ΅μ°¨νλ λμ΄λ₯Ό ꡬνλ κ²μ (μ κΈ°μ΅μ) κ³ 2 μ―€ λ°°μ λ κ² κ°μ μΌκ°ν¨μλ₯Ό μ¬μ©ν΄ ꡬν μ μμ΅λλ€.
λ μμ μ€μ¬μ κ°κ° Oβ
, Oβ
λΌκ³ νκ³ , λ°μ§λ¦μ rβ
, rβ
λΌκ³ μ€μ ν΄λ΄
μλ€. λ μμ΄ κ΅μ°¨νλ μ λ€μ P
μ P'
λΌκ³ νλ©΄, μ΄ λ€ μ μΌλ‘ μΌκ°ν OβOβP
μ μΌκ°ν OβOβP'
λ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ μ λΆ OβOβ
μ κΈΈμ΄λ λ μμ μ€μ¬ μ¬μ΄μ 거리 dκ° λ©λλ€.
ν₯λ―Έλ‘κ²λ, μ΄ λ μΌκ°νμ μΈ λ³μ κΈΈμ΄κ° λͺ¨λ κ°μ SSS ν©λ μΌκ°νμ
λλ€.
λ°λΌμ κ° POβOβ
μ ν¬κΈ°λ μ 체 μ€μ¬κ° ΞΈβ
μ μ λ°μ ν΄λΉν©λλ€. μ΄μ μΌκ°ν OβOβP
μ λͺ¨λ λ³μ κΈΈμ΄λ₯Ό μκ³ μμΌλ―λ‘, μ½μ¬μΈ μ 2λ²μΉμ μ μ©ν μ μμ΅λλ€.
μ½μ¬μΈ μ 2λ²μΉμ λ°λ₯΄λ©΄ ${r_{2}}^2 = {r_{1}}^2 + d^2 - 2r_{1}d\cdot\cos\dfrac{ΞΈ_{1}}{2}$ λΌλ κ΄κ³μμ μ»μ μ μμ΅λλ€. μ΄ μμ $ΞΈ_{1}$μ λν΄ μ 리νλ©΄, μ½μ¬μΈμ μν¨μλ₯Ό μ΄μ©νμ¬ $ΞΈ_{1} = 2\cos^{-1}\left(\dfrac{d^2 + {r_{1}}^2 - {r_{2}}^2}{2d\cdot r_{1}}\right)$λΌλ 곡μμ λμΆν μ μμ΅λλ€.
λ§μ°¬κ°μ§ λ°©λ²μΌλ‘ $ΞΈ_{2}$μ λν΄μλ $ΞΈ_{2} = 2\cos^{-1}\left(\dfrac{d^2 + {r_{2}}^2 - {r_{1}}^2}{2d\cdot r_{2}}\right)$λΌλ 곡μμ μ»μ μ μμ΅λλ€.
\[{r_{2}}^2 = {r_{1}}^2 + d^2 - 2r_{1}d\cdot\cos\dfrac{ΞΈ_{1}}{2}\] \[ΞΈ_{1} = 2\cos^{-1}\left(\dfrac{d^2 + {r_{1}}^2 - {r_{2}}^2}{2d\cdot r_{1}}\right) \quad \quad ΞΈ_{2} = 2\cos^{-1}\left(\dfrac{d^2 + {r_{2}}^2 - {r_{1}}^2}{2d\cdot r_{2}}\right)\]μ΄μ λ λΆμ±κΌ΄μ μ€μ¬κ°μ λͺ¨λ ꡬνμΌλ―λ‘, λ°μ§λ¦κ³Ό μ€μ¬κ°μ μ΄μ©νμ¬ νμν λμ΄λ€μ κ³μ°ν μ μμ΅λλ€.
κ΅μ°¨ μμμ λμ΄λ₯Ό ꡬνκΈ° μν΄μλ λ κ°μ λΆμ±κΌ΄ λμ΄μ ν©μμ λ κ°μ μΌκ°ν λμ΄μ ν©μ λΉΌμΌ ν©λλ€.
λΆμ±κΌ΄ λμ΄μ ν© $S_{1}$μ $\dfrac{1}{2} {r_{1}}^2 \theta_1 + \dfrac{1}{2} {r_{2}}^2 \theta_2$κ° λκ³ , μΌκ°ν λμ΄μ ν© $S_{2}$λ $\dfrac{1}{2} {r_{1}}^2 \sin\theta_1 + \dfrac{1}{2} {r_{2}}^2 \sin\theta_2$κ° λ©λλ€. μ΅μ’ μ μΌλ‘ ꡬνκ³ μ νλ κ΅μ°¨ μμμ λμ΄ $S$λ $S_{1}$μμ $S_{2}$λ₯Ό λΊ κ°μ λλ€.
\[S_{1} = \dfrac{1}{2} {r_{1}}^2 \theta_1 + \dfrac{1}{2} {r_{2}}^2 \theta_2 \quad \quad S_{2} = \dfrac{1}{2} {r_{1}}^2 \sin\theta_1 + \dfrac{1}{2} {r_{2}}^2 \sin\theta_2\] \[S = S_{1} - S_{2} = \dfrac{1}{2} {r_{1}}^2 \theta_1 + \dfrac{1}{2} {r_{2}}^2 \theta_2 - \dfrac{1}{2} {r_{1}}^2 \sin\theta_1 + \dfrac{1}{2} {r_{2}}^2 \sin\theta_2\]μ΄λ₯Ό μ 리νλ©΄ $S = \dfrac{1}{2} {r_{1}}^2 \left( \theta_1 - \sin\theta_1 \right) + \dfrac{1}{2} {r_{2}}^2 \left( \theta_2 - \sin\theta_2 \right) $ λΌλ κΉλν 곡μμ μ»μ μ μμ΅λλ€.
ꡬν 곡μμ ꡬννκΈ°λ§ νλ©΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μ 체 μ½λ
#include <iostream>
#include <cmath>
using namespace std;
const double PI = acos(-1);
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
double x1, y1, r1, x2, y2, r2;
cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
double dx = x1 - x2;
double dy = y1 - y2;
double d = sqrt(dx*dx + dy*dy);
double S;
if(d >= r1 + r2) S = 0;
else if(d <= abs(r1 - r2)) S = PI * pow(min(r1, r2), 2);
else {
double angle1 = 2 * acos((r1*r1 + d*d - r2*r2) / (2*r1*d));
double angle2 = 2 * acos((r2*r2 + d*d - r1*r1) / (2*r2*d));
double area1 = 0.5 * r1*r1 * (angle1 - sin(angle1));
double area2 = 0.5 * r2*r2 * (angle2 - sin(angle2));
S = area1 + area2;
}
cout.precision(3);
cout << fixed << S << '\n';
return 0;
}
Comments