Предложу следующий подход к решению задачи 2.
I. Рассмотрим небольшую вспомогательную задачку.
Дана окружность
![$(O_r, r)$ $(O_r, r)$](https://dxdy-04.korotkov.co.uk/f/f/7/d/f7d9d3a30c139bdb2f44b2589535253082.png)
. Ее касаются две окружности
![$(O_a, a)$ $(O_a, a)$](https://dxdy-02.korotkov.co.uk/f/d/f/3/df3c216487720ee089277ffdc6bf9ff382.png)
и
![$(O_b, b)$ $(O_b, b)$](https://dxdy-03.korotkov.co.uk/f/a/0/e/a0ed0d9510d7484eb372860af01f1ebc82.png)
(в точках
![$A$ $A$](https://dxdy-02.korotkov.co.uk/f/5/3/d/53d147e7f3fe6e47ee05b88b166bd3f682.png)
и
![$B$ $B$](https://dxdy-03.korotkov.co.uk/f/6/1/e/61e84f854bc6258d4108d08d4c4a085282.png)
соответственно). Сами окружности
![$(O_a, a)$ $(O_a, a)$](https://dxdy-02.korotkov.co.uk/f/d/f/3/df3c216487720ee089277ffdc6bf9ff382.png)
и
![$(O_b, b)$ $(O_b, b)$](https://dxdy-03.korotkov.co.uk/f/a/0/e/a0ed0d9510d7484eb372860af01f1ebc82.png)
между собой также касаются (в точке
![$M$ $M$](https://dxdy-04.korotkov.co.uk/f/f/b/9/fb97d38bcc19230b0acd442e17db879c82.png)
).
Требуется найти следующие величины:
![$C(a, b, r)$ $C(a, b, r)$](https://dxdy-01.korotkov.co.uk/f/8/d/a/8dae20ad747688c1b32a3e692d29bdc482.png)
- длина отрезка
![$AB$ $AB$](https://dxdy-02.korotkov.co.uk/f/5/a/5/5a58df2f9303017b173748509a0aa34c82.png)
, то есть расстояние между точками касания,
![$L(a, b, r)$ $L(a, b, r)$](https://dxdy-02.korotkov.co.uk/f/d/2/8/d2891f8d90048219d49de070f6ba1d1182.png)
- длина дуги
![$AB $AB](https://dxdy-02.korotkov.co.uk/f/d/9/e/d9e90f2cdc9aa873ce427a1b622dbf4782.png)
окружности
![$(O_r, r)$ $(O_r, r)$](https://dxdy-04.korotkov.co.uk/f/f/7/d/f7d9d3a30c139bdb2f44b2589535253082.png)
.
Сначала найдем
![$C(a, b)$ $C(a, b)$](https://dxdy-02.korotkov.co.uk/f/1/c/f/1cfbc8417cfee7a428d61347e4d390f782.png)
. По теореме косинусов из треугольника
![$O_rO_aO_b$ $O_rO_aO_b$](https://dxdy-04.korotkov.co.uk/f/b/2/9/b2960feca511062f9a05d4d6886071f882.png)
найдем
![$\alpha = \angle O_aO_rO_b$ $\alpha = \angle O_aO_rO_b$](https://dxdy-02.korotkov.co.uk/f/1/4/2/142cdb2a1677fd88e382334b48833adb82.png)
, подставим в теорему косинусов для треугольника
![$O_rAB$ $O_rAB$](https://dxdy-01.korotkov.co.uk/f/0/4/d/04dfba3c3b66bd8ade9feda3a97561ba82.png)
и выразим
![$AB$ $AB$](https://dxdy-02.korotkov.co.uk/f/5/a/5/5a58df2f9303017b173748509a0aa34c82.png)
. Получим
![$C(a, b, r) = AB = \frac{2}{\sqrt{\frac{1}{a b} + \frac{1}{a r} + \frac{1}{b r} + \frac{1}{r^2}}}$ $C(a, b, r) = AB = \frac{2}{\sqrt{\frac{1}{a b} + \frac{1}{a r} + \frac{1}{b r} + \frac{1}{r^2}}}$](https://dxdy-04.korotkov.co.uk/f/b/1/e/b1eac109eac741a8456c57ace05ade2b82.png)
Зная хорду, нетрудно найти и дугу:
II. Пусть теперь у нас есть все та же окружность
![$(O_r, r)$ $(O_r, r)$](https://dxdy-04.korotkov.co.uk/f/f/7/d/f7d9d3a30c139bdb2f44b2589535253082.png)
, но ее касается набор других окружностей с радиусами
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
,
![$0 \le i \le n - 1$ $0 \le i \le n - 1$](https://dxdy-04.korotkov.co.uk/f/b/c/5/bc5c21da8d0c8c439cea0c3f21dbb1c682.png)
, и все эти окружности последовательно касаются друг друга (как в условии задачи, то есть нулевая касается первой, первая касается второй, ..., последняя касается нулевой).
Если вся эта конструкция собралась правильно, и последняя окружность смогла коснуться нулевой, будет выполняться условие
![$S(r_i, i \le 0 \le n - 1, r) = \sum_{i = 0}^{n - 1}{L(r_i, r_{(i + 1)\mod n}, r)} = 2 \pi r$ $S(r_i, i \le 0 \le n - 1, r) = \sum_{i = 0}^{n - 1}{L(r_i, r_{(i + 1)\mod n}, r)} = 2 \pi r$](https://dxdy-02.korotkov.co.uk/f/9/5/0/950ef840926c92be5075ce45349ff89982.png)
то есть, посчитав все попарные дуги между точками касания на окружности
![$(O_r, r)$ $(O_r, r)$](https://dxdy-04.korotkov.co.uk/f/f/7/d/f7d9d3a30c139bdb2f44b2589535253082.png)
, мы получим всю длину этой окружности.
Если мы выберем радиус
![$r$ $r$](https://dxdy-01.korotkov.co.uk/f/8/9/f/89f2e0d2d24bcf44db73aab8fc03252c82.png)
слишком маленьким, то выражение
![$S(r_i, i \le 0 \le n - 1, r)$ $S(r_i, i \le 0 \le n - 1, r)$](https://dxdy-03.korotkov.co.uk/f/e/2/d/e2dce40425cdea4d74c88d04bb8d700282.png)
окажется больше длины окружности
![$2 \pi r$ $2 \pi r$](https://dxdy-04.korotkov.co.uk/f/7/c/0/7c0028cdcd7cb4560346ae772082240682.png)
. Если мы выберем радиус r слишком большим, то выражение
![$S(r_i, i \le 0 \le n - 1, r)$ $S(r_i, i \le 0 \le n - 1, r)$](https://dxdy-03.korotkov.co.uk/f/e/2/d/e2dce40425cdea4d74c88d04bb8d700282.png)
будет наоборот меньше длины окружности
![$2 \pi r$ $2 \pi r$](https://dxdy-04.korotkov.co.uk/f/7/c/0/7c0028cdcd7cb4560346ae772082240682.png)
. Таким образом, искомый радиус - корень следующего уравнения:
![$\sum_{i = 0}^{n - 1}{L(r_i, r_{(i + 1)\mod n}, r)} - 2 \pi r = 0$ $\sum_{i = 0}^{n - 1}{L(r_i, r_{(i + 1)\mod n}, r)} - 2 \pi r = 0$](https://dxdy-01.korotkov.co.uk/f/4/7/4/474606e64805ed32b896a7f0f8c6298582.png)
Аналитически решить такое уравнение не берусь, но численно оно решается без проблем.
III. Определение порядка касания окружностей.
Как уже было отмечено в теме, значение искомого радиуса существенно зависит от порядка, в котором расположены окружности с радиусами
![$r_i$ $r_i$](https://dxdy-04.korotkov.co.uk/f/3/c/f/3cf87ea38a615ed99e0232f8ed9431fe82.png)
. На тему определения порядка требуется некое строгое обоснование, однако полный перебор всех вариантов расположения окружностей показывает, что оптимальным вариантом является жадное расположение, при котором мы сначала пытаемся расположить рядом окружности с наибольшей разницей в радиусах.
Например:
Пусть даны радиусы
![$[1, 2, 4, 6, 8, 15]$ $[1, 2, 4, 6, 8, 15]$](https://dxdy-04.korotkov.co.uk/f/7/6/7/767a75cb8253f1ba4efad8b460c32e3c82.png)
. Наибольшая разница в радиусах это
![$15 - 1 = 14$ $15 - 1 = 14$](https://dxdy-01.korotkov.co.uk/f/c/a/2/ca2e1afe09583b4ca9f890f741b40e8282.png)
, расположим и рядом. Следующая максимальная разница, которую мы можем получить это
![$15 - 2 = 13$ $15 - 2 = 13$](https://dxdy-02.korotkov.co.uk/f/5/7/b/57b69dd003b880c18a1ba03d9c5ca2a982.png)
, располагаем
![$2$ $2$](https://dxdy-04.korotkov.co.uk/f/7/6/c/76c5792347bb90ef71cfbace628572cf82.png)
с другой стороны от
![$15$ $15$](https://dxdy-04.korotkov.co.uk/f/3/2/1/321d40fbe58f2e8c27e9964b658fbf6282.png)
(на этом этапе число
![$15$ $15$](https://dxdy-04.korotkov.co.uk/f/3/2/1/321d40fbe58f2e8c27e9964b658fbf6282.png)
выбывает, так как окружено с двух сторон). Следующая максимальная разница это
![$8 - 1 = 7$ $8 - 1 = 7$](https://dxdy-03.korotkov.co.uk/f/a/f/1/af136f3091ec2a4b7f4fcb3eae19d4b882.png)
, располагаем
![$8$ $8$](https://dxdy-01.korotkov.co.uk/f/0/0/5/005c128d6e551735fa5d938e44e7a61382.png)
рядом с
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
. И так далее, получим следующую оптимальную перестановку:
![$[1, 2, 4, 6, 8, 15] \rightarrow [1, 8, 4, 6, 2, 15]$ $[1, 2, 4, 6, 8, 15] \rightarrow [1, 8, 4, 6, 2, 15]$](https://dxdy-04.korotkov.co.uk/f/7/6/4/7640da617e83e2a9bbbb34ff6c9e511b82.png)
.
P.S. На диких конфигурациях это может не работать. Например, если мы расположим последовательно окружности с радиусами
![$[10^6, 1, 10^6]$ $[10^6, 1, 10^6]$](https://dxdy-03.korotkov.co.uk/f/6/f/0/6f083be63a8cf6308ca7eb47c4bc021b82.png)
, то конечно у крайних двух двух между собой будет конфликт.