Size: a a a

2020 May 20

MB

Mikail Bagishov in pro.algorithms
Konstantin
в связном неориентированном графе есть нечётный цикл тогда и только тогда, если между двумя вершинами x и y, для которых минимальные расстояния от определённой вершины равны, есть ребро
Предлагаю рассмотреть какой-нибудь нечетный цикл
источник

MB

Mikail Bagishov in pro.algorithms
Взять в нем вершину и противоположное ребро
источник

MB

Mikail Bagishov in pro.algorithms
Проблема в том, что расстояние может быть короче, чем по циклу, но выглядит преодолимо
источник

K

Konstantin in pro.algorithms
Я думаю так: если наш цикл нечётный только в одной вершине соединён с остальной частью графа, то для него такое правило выполняется. Теперь возьмём вторую точку соединения. Ясно, что таким образом образуется ещё один цикл. Если во внешнем цикле тоже есть вторая точка, то возьмём цикл ещё больше, и так до тех пор, пока у нас не будет большой цикл с одной точкой соединения
источник

K

Konstantin in pro.algorithms
Если он нечётный, то мы уже доказали всё
источник

CD

Constantine Drozdov in pro.algorithms
Konstantin
в связном неориентированном графе есть нечётный цикл тогда и только тогда, если между двумя вершинами x и y, для которых минимальные расстояния от определённой вершины равны, есть ребро
BFS умеет раскрашивать граф в два цвета
источник

CD

Constantine Drozdov in pro.algorithms
Если это свойство выполнено, то нечетный цикл предъявлен
Если это свойство не выполнено, проведем BFS из определенной вершины. Любое ребро u <-> v соединяет вершины |d[u] - d[v]| <= 1, и свойство запрещает d[u] - d[v] == 0
источник

CD

Constantine Drozdov in pro.algorithms
значит, |d[u] - d[v]| == 1 и d[u] % 2 раскраска в два цвета
источник
2020 May 21

t

tdiff in pro.algorithms
Здравствуйте,

Подскажите, пожалуйста, где посмотреть хорошую реализацию decimal fixed point.

При делении fixed point чисел требуется хранить временное значение с большей длиной, чем используется для представления числа.  Т.е.

class fixed {
  int64_t value;
  void operator/(other) {
    int128_t v = value;
    v *= exponent();
    v /= other;
    value = v
  }
}
где
exponent() - 10^число знаков после запятой


Но что делать, если для хранения значения использовать int128_t?
источник

t

tdiff in pro.algorithms
Можно ли сделать что-то лучше, чем использовать какую-то long integer арифметику, учитывая, что умножение делается на степень 10?
источник

AT

Anatoly Tomilov in pro.algorithms
int128_t - это long integer арифметика под капотом
источник

t

tdiff in pro.algorithms
окей. Но int256 арифметики под капотом пока нет, поэтому я ищу оптимальный способ это сделать
источник

t

tdiff in pro.algorithms
особенно в части деления, с умножением попроще
источник
2020 May 22

AT

Anatoly Tomilov in pro.algorithms
Проще всего, если нужен вывод, вручную реализовать двоично-десятичный формат. В uint16 можно хранить числа до 10000. Правда пара бит будут незадействованы. Т.е. у тебя 1 цифра будет от 0 до 9999
источник

AT

Anatoly Tomilov in pro.algorithms
Насчёт деления не скажу
источник

MB

Mikail Bagishov in pro.algorithms
Зачем это тут?
источник

DK

Dmitry Kozyrev in pro.algorithms
Кремлебот вошел в чат
источник

/dev/urandon ¯\_(ツ)_... in pro.algorithms
Dmitry Kozyrev
Кремлебот вошел в чат
И вышел из чата
источник

mq

m q in pro.algorithms
извините за немного научпоп-стайл вопрос, но если сплей-деревья такие классные и волшебные, то почему их никто не использует в спортпроге (ну кроме линкката, скажем)?
источник

mq

m q in pro.algorithms
насколько я понимаю можно легко писать сплеи вместо декартачей и вообще просто вместо стандартного сета
источник