
Max
11.10.2018
20:16:04
нет
в данном контексте - да

Alex
11.10.2018
20:16:05

Max
11.10.2018
20:17:16
нет
говорит приложению, что будет многопоточка и шаред либа. В остальном, конечно, не то.

Stanislav
11.10.2018
20:17:43

Google

Kitsu
11.10.2018
20:19:22

Max
11.10.2018
20:19:29

Fuzzytoozy
11.10.2018
20:28:06
Скорей всего это действительно эта фишка , все симптомы на лицо

Constantine
11.10.2018
20:32:59

Basil
12.10.2018
06:39:13
помните задачу про тругольники, что была ы этом треде и я предложил решение

Ilia
12.10.2018
06:39:59
Ну?

Basil
12.10.2018
06:40:08
сложности N*N. так вот, я нашел решение сложности N

Ilia
12.10.2018
06:40:46
Ну излагай уже

Basil
12.10.2018
06:41:33
оно довольно заковыристо математически и требует составления огромной компайлтайм таблицы особых точек

Ilia
12.10.2018
06:42:22
Там же надо было найти все равнобедренные треугольники?

Basil
12.10.2018
06:42:46
таблица составляется по oeis.org/A004018
да, равнобедренные

Google

Ilia
12.10.2018
06:43:06
Апни задачу если есть под рукой

/dev
12.10.2018
06:43:40

Basil
12.10.2018
06:45:11
да, это она, только там ограничение было, типа квадрат на 1000.

/dev
12.10.2018
06:46:07

Ilia
12.10.2018
06:49:39

Basil
12.10.2018
06:49:46
так приведённая мной последовательность и определяет точки для возможных положений вершин этих многоугольников и их немного, для дпстанциих указанной. это константа, причем не превышающая 16.

Ilia
12.10.2018
06:50:03
Чего-то пока не верю

Basil
12.10.2018
06:51:03
и тогда просто линейный проход по точкам, с проверкой есть ли в этих особых точка еще парная

Matthew
12.10.2018
06:51:27
Если две линии параллельные с шагом 1 заполнены точками то треугольников О(N²)

Basil
12.10.2018
06:52:47
а, т.е. координаты не в целых числах? тогда снимаю, остаётся предложенное мной O(N*N)

/dev
12.10.2018
06:53:38

Basil
12.10.2018
06:56:13
да почему же квадрат. мы каждую точку проходим один раз, и в ней нет перебора остальных точек из списка, а только проверка, есть ли в особых точках две позиции из списка, и не лежат ли они на прямой
а это константа

/dev
12.10.2018
06:57:14

Олег
12.10.2018
06:58:04

/dev
12.10.2018
06:58:15

Basil
12.10.2018
06:58:21
еще раз уточню, координаты целые, или нет?

Олег
12.10.2018
06:58:27
Целочисленность координат — очень сильное ограничение.

Google

Ilia
12.10.2018
06:59:17

Basil
12.10.2018
07:00:04
если они рациональные, решение снимаю, остаётся Nквадрат.
с наихудшим случаем одна точка в центре, остальные по окружности

/dev
12.10.2018
07:03:01

Basil
12.10.2018
07:04:02
но тогда она выходит из задачи вычислительной, ибо представление рацинальных чисел упирается в ограничение разрядности
я про допущение, что координаты рациональны
блин, надо больше отдыхать, чтобы такое ночью не приснилось, как мне это решение сегодня.

Matthew
12.10.2018
07:18:38
Сейчас нарисовать попробую

/dev
12.10.2018
07:19:36
а это константа
Оно является константой для фиксированного радиуса. А вот радиусы можно очень долго перебирать.
Вот другой контрпример: сетка N=3k*k. Рассмотрим центральный квадрат k*k. Для каждой упорядоченной пары вершин (u,v) в ней (где u,v не лежат на одной оси oy), есть третья вершина w — зеркально отраженная v относительно вертикальной оси, проходящей через u. uvw — равнобедренный треугольник. Таких пар (u,v) — O(k⁴) = O(N²). При этом в учёте таких треугольников каждую пару посчитали не более двух раз. Итого, уже хотя бы есть O(N²) равнобедренных треугольников, вывод уже дольше O(N)

Basil
12.10.2018
07:26:18
так, подумал, и понял, что соглашусь, просто предствавил 9 точек, в квадрате 3*3, треугольников больше 9, в моём решении ошибка в оценке сложности

Matthew
12.10.2018
07:32:03
https://i.imgur.com/FX63rZb.png
Тут 24 треугольника
Если приблизить отрезки, будет еще больше
Количество прямоугольных треугольников, где одна вершина лежит на одном отрезке, а две остальные на другом (причем одна из сторон перпендикулярна отрезкам), линейно зависит от количества точек
А вот количество "обычных" треугольников зависит квадратично: для каждой на одном отрезке мы говорим, что существует О(N) (в среднем) пар точек на другом отрезке таких, что отрезок между этими двумя точками будет основанием нашего треугольника
Всего получится O(N^2)

Ilia
12.10.2018
07:35:27

Matthew
12.10.2018
07:38:43
Почему квадрат? Куб же (без малого)
Квадртичное решение:
Для каждой точки Х множество других точек превращаем в пары (dist, cnt) - расстояние и количество. Тогда количество равнобедренных треугольников с вершиной в точке Х равно сумме cnt*(cnt - 1) / 2 по всем возможным dist.
Проверять треугольники на равносторонность нет нужды - в рациональных точках таких не встретится

Ilia
12.10.2018
07:41:00

Terminator
12.10.2018
07:51:13
@Forrgit будет жить. Поприветствуем!

Dmitry
12.10.2018
08:21:36
Как передавать ренджи в функи? По ссылке или по значению?

Ruslan
12.10.2018
08:41:21
Это вот эти чтоли - https://en.cppreference.com/w/cpp/experimental/ranges ?

Dmitry
12.10.2018
08:45:49
Любые невладеющие. boost::ranges, ranges-v3

Google

Dmitry
12.10.2018
08:46:14
Походу Ranges TS будет аналогиччен ranges v3 так что и он тоже
Кажется, что они должны быть с value семантикой, как типа string_view. Но хрен его знает, пишут ли их из расчета на то, что они могут передаваться по значению. Насколько тяжелые там итераторы итд
да и вообще итересует даже просто какой вариант идеоматичнее

Ilia
12.10.2018
08:57:01

Никита
12.10.2018
08:57:35
так их же изначально продвигают как нечто легковесное, для копирования по значению. то, что изначально в ranges ts proposal называлось range, а потом вылилось во view, в самом своем определении несут "it has constant time copy/move/assignment "

Igor
12.10.2018
08:57:41
спасибо, капитан! а какие сигнатуры православно писать, fun(Range<int>) или fun(const Range<int>&) ?

Ilia
12.10.2018
08:58:41
Какие тебе нужны. Копировать рэнжи можно. Надо тебе -- копируй. Не надо -- передавай по ссылке (const или нет)

Александр
12.10.2018
08:58:59

Ilia
12.10.2018
08:59:15

Nikita
12.10.2018
09:04:18
а определяется ли стандартом порядок инициализации статических переменных?
хочу написать в .cpp const std::string Class::field1 = "Foo";
const std::string Class::field2 = Class::field1;

Alexander
12.10.2018
09:05:06
если в одном, то в порядке обьявления
если между юнитами, то не определён

Nikita
12.10.2018
09:05:58
в одном юните?
т.е. если я в одном .cpp напишу вон ту штуку, то всё ок буит?

Alexander
12.10.2018
09:06:25

Nikita
12.10.2018
09:06:55
дыа
пасиба
а порядок уже был закреплён в c++03?

Alexander
12.10.2018
09:07:41
точнее, точно да

Google

Nikita
12.10.2018
09:08:07

Egor
12.10.2018
09:08:32
-WHOLEARCHIVE кто-то использует? какие подводные?
https://docs.microsoft.com/en-us/cpp/build/reference/wholearchive-include-all-library-object-files?view=vs-2017

Ilia
12.10.2018
09:20:38
отлично
Чета я какта совсем не уверен....
Саша может подкалывает тебя?
отлично
Давай другой контрвопрос я тебе задам -- пофигу, можно так или нельзя по стандарту.
Скажи, а тебе самому-то нравится на такое поведение закладываться?
Почему явно не проинициализировать обе переменные в какой-то функции?

Alexander
12.10.2018
09:21:57