|
|
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
Здравствуйте очень нужна помощь, с графами столкнулся впервые. Суть такая, есть N вершин, между ними есть ребра (длину ребер мы задаем сами целым числом). По ребрам ездят точки могут ехать в обе стороны. При нахождении 2 точек в одной вершине происходит столкновение, соответственно если точки едут по 1 ребру навстречу друг-другу тоже произойдет столкновение. Движение точек заданы списком вершин через которые они проходят. Скорости точек =1. По достижению конечной вeршины тoчка исчезает. По зaданной конфигурации сети и точек oпределить будет ли стoлкновение? Пишу на c# буду благодарен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 20:46 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
grigorill, Для решения тебе почти ничего и не надо знать о графах. Просто моделируй состояние системы во времени. Изменение состояния системы происходит, когда одна из точек попадает в новую вершину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:06 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
Вообще-то, даже граф здесь ни при чём... При заданной длине ребер и списке вершин для пути точек - построим список путей для каждой точки в виде отрезков на числовой прямой, при этом каждое ребро (отрезок) будет иметь и уникальный идентификатор. А затем найдем пересечение этих путей (сложим их все на одну прямую), при этом запоминая идентификаторы, входящие в каждый отрезок. При этом получим множество отрезков, и там, где будут иметься совпадающие идентификаторы - там и будут "столкновения"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:14 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
Кстати, было бы интерересно решить данную задачу чисто "физически", т.е. в графическом виде. Если длины рёбер различаются не на порядки, то картинку можно даже нарисовать. Ну и не забываем об одном упущенном вопросе - при "столкновении" точки тоже исчезают? или продолжают двигаться дальше, но мы просто учитываем "встречу"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:20 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
Конкретно ничего не сказано, но как я представляю окончание работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:27 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
AndreTMпри "столкновении" точки тоже исчезают? или продолжают двигаться дальше, но мы просто учитываем "встречу"?там надо выяснить, будет ли хоть одно столкновение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:29 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
grigorill, Чуть более конкретно. Состояние системы = вектор состояний точек. Состояние точки = ребро, направление, остаточное время движения. Для перехода в новое состояние находим минимальное остаточное время. Переходим, корректируя состояние системы. Повторяем в цикле. Нужно еще конкретнее - задавай конкретный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 21:37 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
Если конкретнее, как привязать к каждой точке список вершин. Через массив, или как лучше? Или создавать новый объект со своими уникальными параметрами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 22:15 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
grigorill, ??? вообще-то, рабочей моделью предложен список временнЫх меток с набором прошедших метку точек-направлений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2011, 22:43 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
grigorill, Можно попробовать составить для каждой вершины "расписание" прибытия каждой точки в эту вершину, при условии, что других точек (и столкновений) нет. Если есть вершины, в которых время прибытия нескольких точек одинаковое - столкновение в этой вершине. Столкновение на ребре детектируется аналогично, но с учетом направления движения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 04:50 |
|
||
|
Задача "Олимпиадная"
|
|||
|---|---|---|---|
|
#18+
grigorillЗдравствуйте очень нужна помощь, с графами столкнулся впервые. Суть такая, есть N вершин, между ними есть ребра (длину ребер мы задаем сами целым числом). По ребрам ездят точки могут ехать в обе стороны. При нахождении 2 точек в одной вершине происходит столкновение, соответственно если точки едут по 1 ребру навстречу друг-другу тоже произойдет столкновение. Движение точек заданы списком вершин через которые они проходят. Скорости точек =1. По достижению конечной вeршины тoчка исчезает. По зaданной конфигурации сети и точек oпределить будет ли стoлкновение? Пишу на c# буду благодарен за любую помощь. наверно - могут ли быть такие пути, что столконовения не будет , если все имеющиеся точки одновременно стартовали, не могут простаивать, надо пройти по не менее трем вершинам, путь не может проходить по вершинам, где уже была, ...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2011, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37574116&tid=1342562]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
179ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 534ms |

| 0 / 0 |
