53:36 Мне это кажется, или в вашем решении не учитываются варианты, когда самая длинная цепочка может начинаться не в той точке, где закончилась предыдущая цепочка, а находиться внутри этой последовательности? Ведь, если допускается присутствие других О внутри цепочки, тогда обязательно учесть и цепочки, начинающиеся с этих О и так же включающие не более двух F. Поэтому такое решение уместно для условия, что в искомой последовательности должно присутствовать не более одной F, но не подходит для двух и более. Мне точно не померещилась ошибка в этом решении, или я что-то не понимаю?
@@kompege На тесте: s = 'AAOBFCCFDDOEEEFAAOBBFCCODD' программа даст ответ 22 (т.е. цепочка: 'OBFCCFDDOEEEFAAOBBFCCO'), что неправильно! Правильный ответ 9 для подцепочки 'OBFCCFDDO', где символы 'O' идут последовательно.
Алексей, спасибо за подробный разбор, спасибо за помощь, тем, кто готовится к ЕГЭ. Решила использовать новый метод для решения № 4752. К сожалению, у меня не сошелся ответ. Не могу понять в чем ошибка. Помогите, пожалуйста. Вот мой код: s= open('24-181.txt').readline() l=m=k=0 for r in range(len(s)): if s[r]=='.': l=r+1 k=0 if s[r] in 'AEIOUY': k+=1 if k
Программа номер 3 не будет работать, если строка состоит из 120 букв Z. В этом случае внутри цикла while kz сразу станет равным 119 и m вычисляться не будет.
здравствуйте. посмотрела 3 веба. прорешала дз. но такую задачку не получается решить Текстовый файл 24-280.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита. Определите длину самой длинной подпоследовательности символов, в которой нет повторяющихся букв. можете, пожалуйста, подсказать решение или хотя бы метод. буду очень благодарна
Не правильнее ли вызывать m = min(m, r - l + 1) сразу после while? В этой точке у нас точно выполняется условие all(d.values()) Если сделать это в конце, то например референсная строка '0123456789ABCDEF' распознана не будет. # s = open('24-249.txt').readline() s = '0123456789ABCDEF' d = {x: 0 for x in '0123456789ABCDEF'} l = 0 m = 10 ** 10 for r in range(len(s)): if s[r] in d: d[s[r]] += 1 while all(d.values()): m = min(m, r - l + 1) if s[l] in d: d[s[l]] -= 1 l += 1 print(m)
Что скажете по поводу такого решения двух последних задач? s = open('24-262.txt').readline() l = m = 0 k1 = 0 k2 = '' for r in range(3, len(s)): k1 += s[r-3:r+1] == 'SOLO' k2 += s[r] if s[r] in '0123456789' else '' while k1 > 4: k1 -= s[l:l+4] == 'SOLO' if s[l] in '0123456789': k2 = k2.replace(s[l], '', 1) l += 1 if len(set(k2)) >= 5: m = max(m, r - l + 1) print(m) s = open('24-249.txt').readline() l = 0 m = 10**20 k = '' for r in range(len(s)): k += s[r] if s[r] in '0123456789ABCDEF' else '' while len(set(k)) >= 16: m = min(m, r - l + 1) if s[l] in '0123456789ABCDEF': k = k.replace(s[l], '', 1) l += 1 print(m)
Было бы прекрастно, чтобы было 3 разных дз, возвожно с повторяющимися задачами, для отработки всех способов
шикарный веб, спасибо, будет круто еще если таймкоды появятся)
Благодарю за веб!😉
44:22 - последовательные буквы, почему между ними могут быть еще буквы "О" ??
перечитайте ещё раз условие, я сначала тоже подумал так
Алексей, почему вы с КЕГЭ удалили вэб по перебору на C++ в 27?
Потому что это потеряло актуальность
53:36 Мне это кажется, или в вашем решении не учитываются варианты, когда самая длинная цепочка может начинаться не в той точке, где закончилась предыдущая цепочка, а находиться внутри этой последовательности? Ведь, если допускается присутствие других О внутри цепочки, тогда обязательно учесть и цепочки, начинающиеся с этих О и так же включающие не более двух F. Поэтому такое решение уместно для условия, что в искомой последовательности должно присутствовать не более одной F, но не подходит для двух и более. Мне точно не померещилась ошибка в этом решении, или я что-то не понимаю?
Ошибки нет, просто вы как то непонятно интерпретировали условие
@@kompegeизвините, я не учел, что между последовательными О
@@kompege На тесте:
s = 'AAOBFCCFDDOEEEFAAOBBFCCODD'
программа даст ответ 22 (т.е. цепочка: 'OBFCCFDDOEEEFAAOBBFCCO'), что неправильно!
Правильный ответ 9 для подцепочки 'OBFCCFDDO', где символы 'O' идут последовательно.
@@damira9234 вы неправильно поняли условие задачи. Не более двух F между последовательными F, а не между крайними
Будет ли по параллельным процессам(22) через деревья?
Дыа
СПАСИБО!
30:07 здесь же необязательно писать if kz == 120
там же в цикле в любом случае будет только 120 kz, разве нет??
Ну я как раз про это и говорю )
а почему только 120? не пойму
@@KyDARcho Потому что это минимальное подходящее количество символов Z в подстроке.
Алексей, спасибо за подробный разбор, спасибо за помощь, тем, кто готовится к ЕГЭ. Решила использовать новый метод для решения № 4752. К сожалению, у меня не сошелся ответ. Не могу понять в чем ошибка. Помогите, пожалуйста. Вот мой код:
s= open('24-181.txt').readline()
l=m=k=0
for r in range(len(s)):
if s[r]=='.':
l=r+1
k=0
if s[r] in 'AEIOUY':
k+=1
if k
А где сдвиг левой границы?
@@kompege Але,ксей, я думала, что команда l=r+1, сдвигает левую границу.
Если k>7 границу тоже нужно сдвигать
@@kompege Спасибо, поняла.
Программа номер 3 не будет работать, если строка состоит из 120 букв Z. В этом случае внутри цикла while kz сразу станет равным 119 и m вычисляться не будет.
Согласен, проверку минимума лучше записать в начало цикла while
Алексей, здравствуйте, а когда домашка обновится по 24 вебу?
здравствуйте. посмотрела 3 веба. прорешала дз. но такую задачку не получается решить
Текстовый файл 24-280.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита. Определите длину самой длинной подпоследовательности символов, в которой нет повторяющихся букв.
можете, пожалуйста, подсказать решение или хотя бы метод. буду очень благодарна
Можно легко решить динамикой, это второй веб на курсе
1:10:14 Допустим в файле встречается последовательность '2022022'. Это будет считаться за две комбинации '2022'? Если нет, тогда нужно другое решение
В этой подстроке комбинация 2022 встречается два раза
Не правильнее ли вызывать m = min(m, r - l + 1) сразу после while?
В этой точке у нас точно выполняется условие all(d.values())
Если сделать это в конце, то например референсная строка '0123456789ABCDEF' распознана не будет.
# s = open('24-249.txt').readline()
s = '0123456789ABCDEF'
d = {x: 0 for x in '0123456789ABCDEF'}
l = 0
m = 10 ** 10
for r in range(len(s)):
if s[r] in d: d[s[r]] += 1
while all(d.values()):
m = min(m, r - l + 1)
if s[l] in d: d[s[l]] -= 1
l += 1
print(m)
Я с вами полностью согласен )
а Этот стрим не разбит на таймкоды
42:09
Алексей, а домашка уже новая?)
напоминает один метод сортировки
10:30
а разве эта техника не называется сдвигающееся окно?
Алексееей
Объяснение 3 задачи максимально плохое, можно скипать
Что скажете по поводу такого решения двух последних задач?
s = open('24-262.txt').readline()
l = m = 0
k1 = 0
k2 = ''
for r in range(3, len(s)):
k1 += s[r-3:r+1] == 'SOLO'
k2 += s[r] if s[r] in '0123456789' else ''
while k1 > 4:
k1 -= s[l:l+4] == 'SOLO'
if s[l] in '0123456789':
k2 = k2.replace(s[l], '', 1)
l += 1
if len(set(k2)) >= 5:
m = max(m, r - l + 1)
print(m)
s = open('24-249.txt').readline()
l = 0
m = 10**20
k = ''
for r in range(len(s)):
k += s[r] if s[r] in '0123456789ABCDEF' else ''
while len(set(k)) >= 16:
m = min(m, r - l + 1)
if s[l] in '0123456789ABCDEF':
k = k.replace(s[l], '', 1)
l += 1
print(m)