Сегодня (30.01.10) прошел второй отборочный раунд на ИОИП. Предлагаю здесь обсудить задачи.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | jiangly | 3670 |
| 3 | Kevin114514 | 3657 |
| 4 | maroonrk | 3355 |
| 5 | Um_nik | 3353 |
| 6 | squareOf105 | 3346 |
| 7 | tourist | 3343 |
| 8 | strapple | 3324 |
| 9 | heuristica | 3322 |
| 10 | jiangbowen | 3291 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | AmShZ | 143 |
| 5 | Um_nik | 142 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 135 |
| 9 | maroonrk | 133 |
| 10 | qwexd | 130 |
| Название |
|---|



Решение примерно такое:
Каждая вершина будет принадлежать какой-то сосне. Если это вершина, в которой другая сосна-ветка крепится к стволу, то эта вершина принадлежит стволу. Храним уровни всех вершин, изначально - нули. Будем удалять листы в порядке убывания уровня. Сначала все листы - сосны уровня 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-ий диплом - ограничения на некоторые факультеты или допол. экзы