Сегодня (30.01.10) прошел второй отборочный раунд на ИОИП. Предлагаю здесь обсудить задачи.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3611 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | dXqwq | 3436 |
| 8 | Radewoosh | 3415 |
| 9 | Otomachi_Una | 3413 |
| 10 | Um_nik | 3376 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 164 |
| 2 | adamant | 150 |
| 3 | Um_nik | 146 |
| 4 | Dominater069 | 144 |
| 5 | errorgorn | 141 |
| 6 | cry | 139 |
| 7 | Proof_by_QED | 136 |
| 8 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 9 | TheScrasse | 134 |
| Название |
|---|



Решение примерно такое:
Каждая вершина будет принадлежать какой-то сосне. Если это вершина, в которой другая сосна-ветка крепится к стволу, то эта вершина принадлежит стволу. Храним уровни всех вершин, изначально - нули. Будем удалять листы в порядке убывания уровня. Сначала все листы - сосны уровня 0, и при переходе в предков, уровень предков станет 1, потому что у 0-сосен нету ствола. При всех других переходах возможны два случая:
1. Переход из собственного ствола в него же. Т.е. все ветки текущей сосны уже удалены, или их не было, и сейчас алгоритм просто перемещается по стволу текущей сосны. Ясно, что уровень сосны менять не надо.
2. Переход из одной сосны в другую. Иногда будут переходы от одной сосны к сосне-родителю. В этом случае надо увеличить уровень сосны-родителя на 1.
Как узнавать какой случай сейчас рассматривается? Достаточно тривиально: если степень вершины-предка 2 или 1, то мы перемещаемся по стволу. Если степень вершины-предка 3 или больше, то это переход в сосну-родителя. Теперь просто обойдем в таком порядке все дерево и в итоге будет заполнен массив с уровнями сосен. Вывести максимум не составит труда.
Для решения, которое укладывается по времени можно использовать сбалансированное дерево поиска, которое хранит параметры которые нам нужны (первичный: степень вершины, вторичный: уровень вершины). Выбирая каждый раз минимум из дерева поиска, можно будет за логарифм изменить предка этой вершины-минимум и соответственно удалить саму вершину-минимум. И так, пока дерево не опустеет.
"Будем называть сосной нулевого уровня граф из двух вершин, соединенных ребром."
"Сосна k-го уровня представляет собой путь, который называется стволом, к некоторым вершинам которого прикреплены сосны уровней не больших k−1."
Не очевидно, но если обдумать, то становится понятно, что все вершины кроме одной - ствол, последняя - сосна-ветка. Основной упор стоит сделать на первую из двух цитат.
поллитрысорса не разбершьсяформула = (n*(n-1))/2*6+1
Дело в том, что при каждой i-ой оболочке прибавляется i*6 шестиугольников.
У меня клиента нет.
Вот тут неплохо объясняется.
Хотелось бы уточнить, правильно ли я думаю: просортировав по длине мы получаем очерёдность расположения пассажиров, а найдя количество течек пересечения временных отрезков отвечаем на первый пункт задачи. Так ли это?
т.е. ты на это сразу рассчитывал?? xD
java -jar Check.jar Check ...
если будешь победителем - добро пожаловать на все факультеты
2,3-ий диплом - ограничения на некоторые факультеты или допол. экзы