Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 25.08.2018
Сообщений: 78

Выведите количество пар индексов (i, j), таких что строка si + sj является хорошей

09.12.2023, 11:37. Показов 2735. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Одна известная команда впервые за несколько месяцев решила написать тренировку. Но друзья
решили, что им чужды старые технологии, поэтому они попросили нейросеть сгенерировать задачу,
а потом решить ее (ведь зачем решать задачи самим). Сама задача звучала довольно просто.
Вам даны n строк s1, s2, . . . , sn, состоящих из цифр от 0 до 9. Необходимо посчитать количество пар индексов (i, j) 1 <= i <= j <= n, таких что строка si + sj является хорошей, где si + sj — это конкатенация строк si и sj . Строка t длины m называется хорошей, если для любого индекса 1 < i <= m
выполнено неравенство ti−1 <= ti.
Сгенерировать задачу нейросеть смогла, а вот решить ее — нет. Но друзья уже очень устали,
поэтому решать эту задачу придется вам.

Формат входных данных

Первая строка содержит одно целое число n (1<=n<=100000) — количество строк.
Каждая из следующих n строк содержит строку si. Гарантируется, что строки si состоят только из цифр от 0 до 9.
Гарантируется, что сумма длин строк не превосходит 100 000.

Формат выходных данных

Выведите количество пар индексов (i, j) 1 <= i < j <= n, таких что строка si + sj является хорошей.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).

Пример
Ввод:
4
456
01
1239
701

Вывод:
1

Замечание
В примере подходит только одна пара индексов: (2, 3). Полученная строка 011239 является хорошей.

Помогите решить, пожалуйста ...

Добавлено через 1 час 13 минут
Python
1
2
3
4
5
6
7
n=int(input())
s=[]
for i in range(n):
    t=input()
    s.append(t)
print(s)
for i in range(n):
Вот что написал пока. Как оптимально пройтись по всем строкам, чтобы затратить меньшее количество времени?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2023, 11:37
Ответы с готовыми решениями:

Посчитать количество пар индексов таких что строка si + sj является "хорошей"
Одна известная команда впервые за несколько месяцев решила написать тренировку. Но друзья решили, что им чужды старые технологии, поэтому...

Строка: Для заданной строки α длины n вычислите количество q пар (i, j), таких что α[i..j] является палиндромами.
есть вот такая задачка: Строка называется палиндромом, если она одинаково читается как слева направо, так и справа налево. Например,...

Подсчитать количество таких пар чисел X и Y, что (Х+У) = 80
Ребята, помогите, пожалуйста :) Сама никак не могу понять... Задание: На промежутке от -127 до 127. Подсчитать количество таких пар ...

31
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
10.12.2023, 12:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от eaa Посмотреть сообщение
или я задачу не понял?
Скорее всего... но я и сам не совсем понимаю, чего там в условиях накрутили... но это не комбинаторика.
Учитываются номера строк (необходимые пары индексов), длина строк, в том числе целевой строки при конкатенации, которая должна быть ещё и "хорошей" (по сути невозрастающей)... и всё это с условиями определенных ограничений...

Добавлено через 55 секунд
а сортировка здесь вообще противопоказана, судя по всему.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
10.12.2023, 17:20
YuS_2, упорядочены, хдесь означает, что порядок слагаемых в конкатенации имеет значение.
eaa, боюсь, что так не получится
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
10.12.2023, 19:52
Red white socks, похожая задача.
мое решение Большое число

Добавлено через 18 секунд
только тут нужен подсчет.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
10.12.2023, 19:59
eaa, мне кажется, что тут совсем другое. В той задаче куски не привязаны к индексу.
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
11.12.2023, 07:53
Цитата Сообщение от Red white socks Посмотреть сообщение
что порядок слагаемых в конкатенации имеет значение.
Да, понятно, что терминологию можно применять в отведенных рамках...
т.е. в данном случае, считаем, что условие i<=j (почему-то в формате выходных данных указано другое условие: i<j, но не суть) приводит к упорядоченности внутри пар? Это имеется в виду?
Или это:
То, что любая интересующая строка, должна быть невозрастающей - задано условием, тем самым, которое ограничивает итоговую строку как "хорошую".
?

Вообще, задача сводится к фильтру невозрастающих строк и попарному сравнению первого и крайнего элемента строк. При удовлетворении условиям, пары индексов запоминаются и выводятся. И если правильно понял, то пересечения индексов возможны, т.к. нет ограничения на повторное использование строк, т.е. на подобное : (2,3), (3,7) (2,9) и т.д....
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
11.12.2023, 09:39
Цитата Сообщение от YuS_2 Посмотреть сообщение
условие i<=j (почему-то в формате выходных данных указано другое условие: i<j, но не суть) приводит к упорядоченности внутри пар? Это имеется в виду?
Примерно так. Первое решение, которое предложил, считало по всем парам (i,j). Условие (i<j) делает задачу на порядок сложней.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
11.12.2023, 16:04
Цитата Сообщение от YuS_2 Посмотреть сообщение
(по сути невозрастающей)
Цитата Сообщение от YuS_2 Посмотреть сообщение
к фильтру невозрастающих строк
неубывающие же нужны...
Цитата Сообщение от Maxim1704g Посмотреть сообщение
выполнено неравенство ti−1 <= ti.
Добавлено через 3 минуты
Цитата Сообщение от Red white socks Посмотреть сообщение
делает задачу на порядок сложней.
Почему? Если в лоб, то перебор индексов с исключением уже проверенных...
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
11.12.2023, 16:10
Цитата Сообщение от YuS_2 Посмотреть сообщение
Почему? Если в лоб, то перебор индексов с исключением уже проверенных...
YuS_2, проблема в том что перебор - это О(n^2)
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
11.12.2023, 16:48
Цитата Сообщение от Red white socks Посмотреть сообщение
проблема в том что перебор
Это да... ну, это же в лоб

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
n = int(input())
arr = []
for v in range(n):
    s = input()
    a,b = s[0],s[-1]
    if b > a:
        for g in range(1,len(s)):
            if s[g] >= s[g-1]:
                if g == len(s)-1:
                    arr.append([v,a,b])
            else:
                break
 
ijarr = []
for ind,(xi,yi,zi) in enumerate(arr):
    for ij in range(ind,len(arr)-1):
        xj,yj,zj = arr[ij+1]
        if zi <= yj:
            ijarr.append((xi+1,xj+1))
 
print(ijarr)
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
11.12.2023, 17:45
YuS_2, ну так я примерно этого от ТС и ждал
Цитата Сообщение от Red white socks Посмотреть сообщение
Итак, отфильтровываете неубывающие строки - интересуют только они.
Далее, каждому индексу i вы сопоставляете 2 числа a_i и b_i: цифру с которой i-я строка начинается и которой заканчивается соответственно. Вам надо посчитать число пар i<j, таких что b_i <= a_j
Цитата Сообщение от Red white socks Посмотреть сообщение
А сейчас пишете брут-форс перебор О(n^2) по тому, что я вам сказал. Для n до 1000 тесты пройдете, какие-то баллы заработаете. Для новичка совсем неплохо.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
11.12.2023, 18:11
Цитата Сообщение от Red white socks Посмотреть сообщение
так я примерно этого от ТС и ждал
Ну, я смотрю он совсем потерялся после предложения написать хотя бы его... может поможет кому-то ещё.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
11.12.2023, 18:57
ну если "в лоб", то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def is_good(s):
    return all(s[i - 1] <= s[i] for i in range(1, len(s)))
 
 
a = [input() for _ in range(int(input()))]
*a, = filter(is_good, a)
n = len(a)
count = 0
for i in range(n - 1):
    for j in range(i + 1, n):
        count += is_good(a[i] + a[j])
print(count)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2023, 18:57

Подсчитать количество таких пар чисел X и Y, что 50 < (Х-У) <= 80
Встречал тут такое же задание, но там написано совсем по другому. Само задание звучит так: На промежутке от -128 до 127 подсчитать...

Подсчитать количество таких пар чисел X и Y, что (/Х/+У) <=70
На промежутке от -128 до 127 Подсчитать количество таких пар чисел X и Y, что (/Х/+У) &lt;=70 И вывести на экран Также найти и...

В массиве найти количество пар (i, j) таких, что i < j и a[i] > a[j]
Напишите программу, которая для заданного массива A = {a1, a2, . . . , an} находит количество пар (i, j) таких, что i &lt; j и a &gt; a ....

В данном одномерном массиве найдите количество пар различных элементов таких, что количество единиц в них совпадает
В данном одномерном массиве найдите количество пар различных элементов таких, что количество единиц в них совпадает.

Цикл: подсчитать количество таких пар чисел X и Y, что 50 < (Х-У) <= 80
Люди, помогите разобраться, почему не верно работает цикл. Такое задание: На промежутке от -128 до 127. Подсчитать количество таких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru