Всем привет!
Несколько раз встречался со следующей задачкой и так и не знаю как ее решать, может кто-то поможет?
Есть N человек расположенных на оси OX. Каждый из них сказал, сколько человек строго справа от него и сколько строго слева -- right[i], left[i] (в одной точке может находиться несколько человек). Требуется подсчитать сколько максимум человек говорят правду.
Эта задача была на одном из раундов про грузовики и монстра ДравДэ.
http://codeforces.ru/blog/entry/678 - разбор
http://codeforces.net/contest/28/problem/D - задача
Только это другая задача - там не могло быть нескольких грузовиков в одной точке..
А эта больше похожа на задачу про черепашек с NEERC 2004 (J).
И решается она как-то так:
Строим граф из N + 1 вершины.
Для каждой пары вершин (i, j), где i < j, проводим ребро из i-ой вершины в j-ую весом max(j - i - k, 0), где k - количество человек, которые сказали, что слева от них стоит i человек, а справа - (N - j).
И ищем чем-нибудь кратчайший путь между вершинами 0 и N.