Size: a a a

2020 October 06

CD

Constantine Drozdov in pro.algorithms
если бы я знал ответ, я бы уже решил задачу
источник

P

Pavel in pro.algorithms
если можно ещё касты использовать, то просто разделить прикастованное к беззнаковому на макс инт
источник

P

Pavel in pro.algorithms
и тогда без сравнений и с 0 работает
источник

P

Pavel in pro.algorithms
правда для -1 будет 2, вроде, но и чёрт с ним
источник

m

magras in pro.algorithms
Pavel
если можно ещё касты использовать, то просто разделить прикастованное к беззнаковому на макс инт
В плюсах каст отрицательного числа к беззнаковому это или UB, или implementation defined. Чтобы реализовать такой каст оставаясь в рамках стандарта понадобятся if'ы.
источник

P

Pavel in pro.algorithms
magras
В плюсах каст отрицательного числа к беззнаковому это или UB, или implementation defined. Чтобы реализовать такой каст оставаясь в рамках стандарта понадобятся if'ы.
эхх, вот бы всю задачу прочесть, кажись нам чего-то недосказали
источник

m

magras in pro.algorithms
А такое решение не подойдет?
is_negative(x) = x / (x+1 + is_zero(x+1))
is_zero(x) = 1 / (x*x + 1)


Здесь я пренебрегаю переполнениями.
источник

SG

Sergey Glazyrin in pro.algorithms
Ребята, а в этой задаче можно заюзать какой то супер-пупер алгоритм ?
https://www.hackerrank.com/challenges/3d-surface-area/problem
Я пока решил приблизительно так (так как это не С, пришлось обрабатывать пределы, чтобы не было segmentation fault)
static int surfaceArea(int[][] A) {
   int area = 2*W*H;
   for (int i = 1; i <= H; i++) {
       for (int j = 1; j <= W; j++) {
           area += Math.max(0, A[i][j]-A[i-1][j]);
           area += Math.max(0, A[i][j]-A[i+1][j]);
           area += Math.max(0, A[i][j]-A[i][j-1]);
           area += Math.max(0, A[i][j]-A[i][j+1]);
       }
   }
   return area;
}
источник

SG

Sergey Glazyrin in pro.algorithms
просто интересует название алгоритма... потому что я пытаюсь уйти от решений перебором
источник

АГ

Александр Горнак... in pro.algorithms
Александр Горнак
Добрый вечер, можете подсказать пожалуйста, я чет туплю, как реализовать булеву функцию f(x) = x < 0, используя только операции (+*/%-)?
Взять знак битовыми операциями нельзя
Спасибо всем за идеи, нашлось решение, без рассматривания нуля, но опять же завязанное на неправильном делении в с++:
(x%2+(x+1)%2)*x
источник

АГ

Александр Горнак... in pro.algorithms
Александр Горнак
Спасибо всем за идеи, нашлось решение, без рассматривания нуля, но опять же завязанное на неправильном делении в с++:
(x%2+(x+1)%2)*x
Но это если получить модуль, а дальше из него вытащить сравнение
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Александр Горнак
Спасибо всем за идеи, нашлось решение, без рассматривания нуля, но опять же завязанное на неправильном делении в с++:
(x%2+(x+1)%2)*x
И с чем это сравнивать?
источник

АГ

Александр Горнак... in pro.algorithms
 ‌‌Gleb Pilipets
И с чем это сравнивать?
Можно из этого вычесть x и сравнить с нулем функцией 1 / (x + 1)
источник

K

Kotomord_λapki in pro.algorithms
Есть ли что-то стандартное? В  R^d с манхеттеновским расстоянием заданы два множества точек, нужно для каждой точки из первого множества нйти самую удаленную точку из второго
источник

K

Kotomord_λapki in pro.algorithms
d маленькое
источник

ИС

Иван Смирнов... in pro.algorithms
Для R^2 это вроде как не делается проще, чем farthest-point Voronoi diagram, так что вряд ли есть что-то хорошее в больших размерностях.
источник

K

Kotomord_λapki in pro.algorithms
Я вроде как придумал за nlogn *2^d через персистентное дерево отрезков, но написать за разумное время не осилю
источник

K

Kotomord_λapki in pro.algorithms
Иван Смирнов
Для R^2 это вроде как не делается проще, чем farthest-point Voronoi diagram, так что вряд ли есть что-то хорошее в больших размерностях.
Не контест, константу выжимать не надо
источник

ИС

Иван Смирнов... in pro.algorithms
А как в R^2 за n log n делать?
источник

ИС

Иван Смирнов... in pro.algorithms
Без Вороного.
источник