Size: a a a

2020 September 19

A

Andrei in pro.algorithms
Andrei
Да, действительно. Greedy не нужен: считаем сколько возможно с начала, считаем сколько возможно с конца.
Результаты перемножаем. Это и есть ответ.
    public static int factorial(final int i) {
       return IntStream.range(1, i).reduce((x, y) -> x * y).orElse(1);
   }

   public static int split(final String s) {
       final int total = Math.toIntExact(s.chars().filter(x -> x == 'a').count());
       if (total == 0) {
           return factorial(s.length() - 1);
       }
       final int[] count = new int[]{0, 0};
       int first = 0;
       int last = 0;
       for (int i = 1; i < s.length(); i++) {
           if (s.charAt(i - 1) == 'a') count[0]++;
           if (count[0] < total / 3) continue;
           if (count[0] > total / 3) break;
           first++;
       }
       for (int i = s.length(); i > 0; i--) {
           if (s.charAt(i - 1) == 'a') count[1]++;
           if (count[1] < total / 3) continue;
           if (count[1] > total / 3) break;
           last++;
       }
       return first * last;
   }
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Andrei
Да, действительно. Greedy не нужен: считаем сколько возможно с начала, считаем сколько возможно с конца.
Результаты перемножаем. Это и есть ответ.
Там не факториал в случае, если нету 'a', но направление частично верное.
источник

A

Andrei in pro.algorithms
Если 'a' нет, то факториал вроде
источник

A

Andrei in pro.algorithms
Т.к разбить возможно на любой не нулевой позиции
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
'bbbb' - сколько здесь способов?
источник

A

Andrei in pro.algorithms
 ‌‌Gleb Pilipets
'bbbb' - сколько здесь способов?
bb|b|b, b|bb|b, b|b|bb
источник

A

Andrei in pro.algorithms
3, хм факториал не подходит
источник

DB

Dmitry Baynak in pro.algorithms
C(n-1, 2)
если 'a' вообще нет
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Я не уверен про правильность решения в случае подсчёта количества 'а'  с начала и конца.
источник

DB

Dmitry Baynak in pro.algorithms
если 'a' есть, то известны "ренжи", внутри которых должны стоять '|' (т.к. в каждой части должно быть по 1/3 от всех 'a')
тогда, достаточно отдельно посчитать С(длина ренжа+1, 2)
нужно перемножить длины ренжей
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Ну и ещё корнер кейсы, когда количество 'а' не кратно трём.
источник

DB

Dmitry Baynak in pro.algorithms
эта задача уже была тут буквально недавно
источник

DB

Dmitry Baynak in pro.algorithms
Евгений Вознесенский
Ребят, а если у меня есть массив, который содержит 0, 1 и нужно разделить на 3 не пустых части так, чтобы было одинаковое количество нулей во всех частях.
Подсчитать количество способов, то какие здесь идеи?

Можно попробовать поставить границы слева и справа и двигать, пока не сомкнуться. Если одинаковое количество, то + 1 способ
(сорри за реплай)
источник

A

Andrei in pro.algorithms
Dmitry Baynak
C(n-1, 2)
если 'a' вообще нет
А что такое C?
источник

DB

Dmitry Baynak in pro.algorithms
Andrei
А что такое C?
"число сочетаний"
источник

V🇺

Vladislav 🇺🇸🚜🇷🇺... in pro.algorithms
Andrei
А что такое C?
источник

A

Andrei in pro.algorithms
Получается C(n, 2)/2 при отсутсвие 'a'
источник

A

Andrei in pro.algorithms
Откуда вот деление на 2 получается не понятно, формулу я подбрал
источник

m

magras in pro.algorithms
Andrei
Откуда вот деление на 2 получается не понятно, формулу я подбрал
Потому что нужно поделить на количество перестановок двух границ.
источник

ПК

Паша Калугин... in pro.algorithms
Igor Wylson
Если кто-нибудь писал сегодня Сириус, напишите пж кол-во баллов
В каком смысле "писал Сириус"?
источник