Без описания, что делает io_service_.run_one(), можно только догадываться. Видимо этот метод что-то как-то считает и меняеи переменную ec когда закончит.
STI1KS, Что есть? Не понял ваш коммент.
Вот, уже интереснее. Есть какая-то функция, и надо найти, где она принимает определенное значение.
И, предположительно, это значение она принимает только в одной точке. Если функция непрерывна, то это, кстати. возможно только если искомое значение - минимум или максимум функции.
Ваша изначальная функция (а не ошибка) - она непрерывна? Как она считается? Давайте все, что про нее знаете, иначе никакого вменяемого ответа вы тут не получите.
STI1KS, Можно повертеть? Сечение вдоль одной плоскости сделать? Уровни цветами задать, хотя бы? Я по этой картинке так и не могу понять, там есть локальные минимумы или нет, выпуклая ли она?
Раз вы свойства назвать не можете, давайте тогда описание, как функция считается. Какой у нее физический смысл?
Без каких либо свойств функции - действительно быстрые методы работать не будут.
Владимир Скибин, И это даст не максимальную площадь, практически всегда. Ваши треугольники всегда не будут содержать внутри других точек. Но при этом могут касаться вершинами или сторонами. Т.е какие-то точки будут висеть неиспользованными. А в оптимальном решении может надо взять большой треугольник с кучей точек внутри. Это если, как вы описали, просто выбирать максимальные треугольники. Если же выбирать их так, чтобы они не касались, то такого набора может просто не быть в триангуляции Делоне. Какое свойство именно Делоне вы используете в решении? Можно же кучей разных способов построить триангуляцию.
hint000 Это у вас итеративно выпуклая оболочка оставшегося множества откусывается как очередной слой?
Вообще можно преставить, что тругольник будет пересекать одну из оболочек в оптимальном решении. Преставьте маааленький ромб, вокруг него большой квадрат, а вокруг него еще более большой ромб. В ответе будут 4 трегуольника с вершинами из всех трех оболочек.
Василий Банников, Вот про то, что в каждой точке должна быть вершина в условии как раз не сказано. Но мне кажется логичным, что оно подразумевается.
Alexander_The_Great, А там никакие 3 точки не лежат на одной прямой, поэтому пересечение по границе и не возможно. Ждем автора вопроса с уточнениями. Но я все же склоняюсь к тому, что нельзя касаться. Все-таки зачем треугольников в три раза меньше, чем точек? Если можно переиспользовать точки (и, соответственно, оставлять произвольное их количество неиспользуемыми вообще), то задача бы вообще не поменялась, будь точек N, а треугольников произвольное количество M <= N-2.
Армянское Радио, Alexander_The_Great, Вот только в задаче надо не триангуляцию строить. Иначе решение было бы очевидно (выпуклая оболочка, а дальше триангулировать рекурсивно как угодно. Никакие делоне тут не нужны). Дано 3n точек, надо построить на них n треугольников. Мне кажется, что труегольники не должны пересекаться в вершинах, но если вчитаться в условие, это явно нигде не сказано. Зависит от того, считается ли это за пересечение треугольников.
timaslov Уточните задачу - насколько велико n, надо ли все точки разбить на тройки, или трегольники могут касаться в вершинах?
L1nw0od, Задача криво составлена, При чем тут упаковка кругов в круге? Вы когда блины печете - по несколько кружков в одной сковороде пакуете? Нет, блин обычно занимает всю площадь сковороды. Просто, если сковорода меньше, блины получаются меньше.
На самом деле задача плохо составлена. Осталется ли лишнее тесто после испекания 10 блинов? Может там на 11 не хватает? Или десятый блин занимает не всю сковороду? Вот если бы было написано, что теста хватает ровно на 10 блинов, тогда, действительно, ответ 22, надо просто пропорции и площади кругов знать. Правда там еще одна загвоздка, на самом деле получается 22.5 меньших блинов. И вот в какую сторону округлять, если там два ближайших целых? Округление до четного - это сильно заумная вещь, вряд ли тут применимо.
mestniy_tatarin, Почитайте в википедии, или в учебнике у вас - какая у них временная сложность. Если O(n^2) - то будет также медленно. Если O(n log n) - то будет быстрее.