Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60

Ускорить код.Задача кубики

03.03.2018, 19:59. Показов 4578. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Решил задачу,но не проходит по скорости.Изменял около 5 раз, и оптимизировал максимум на что был способен(с подглядываниями в нет). Набирает 89 балов из 100. Что посоветуете?

Аня и Боря любят играть в разноцветные кубики, причем у каждого из них свой набор и в каждом наборе все кубики различны по цвету. Однажды дети заинтересовались, сколько существуют цветов таких, что кубики каждого цвета присутствуют в обоих наборах. Для этого они занумеровали все цвета случайными числами. На этом их энтузиазм иссяк, поэтому вам предлагается помочь им в оставшейся части. Номер любого цвета — это целое число в пределах от 0 до 10⁹.

Формат ввода

В первой строке входного файла записаны числа N и M — количество кубиков у Ани и Бори соответственно. В следующих N строках заданы номера цветов кубиков Ани. В последних M строках номера цветов кубиков Бори.

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

Выведите сначала количество, а затем отсортированные по возрастанию номера цветов таких, что кубики каждого цвета есть в обоих наборах, затем количество и отсортированные по возрастанию номера остальных цветов у Ани, потом количество и отсортированные по возрастанию номера остальных цветов у Бори.

Тест 1
Входные данные:
4 3
0
1
10
9
1
3
0

Вывод программы:
2
0 1
2
9 10
1
3

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
an, bor = list(map(int, input().split()))
a = set()
b = set()
for i in range(an):
    a.add(int(input()))
for j in range(bor):
    b.add(int(input()))
print(len(a.intersection(b)))
print(*sorted(a.intersection(b)))
print(len(a.difference(b)))
print(*sorted(a.difference(b)))
print(len(b.difference(a)))
print(*sorted(b.difference(a)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.03.2018, 19:59
Ответы с готовыми решениями:

Задача B. WALL-E и кубики
Помогите очень прошу!!) Задача B. WALL-E и кубики Робот WALL-E пытается упорядочить груду кубиков. В зоне его ответственности есть...

Задача про кубики
Помогите пожалуйста с кодом этой задачи: Ване на день рождения подарили n кубиков. Он с друзьями решил построить из них пирамиду. Ваня...

Как ускорить код?
Здравствуйте, имею код, выдает ответ правильно, но не проходит по времени в тестирующей системе. Как мне его изменить, чтобы код стал...

8
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
03.03.2018, 21:10
а так?
Python
1
2
3
4
5
6
N,M =[int(i) for i in input().split()]
kub_anna = set(int(input()) for _ in range(N))
kub_boris = set(int(input()) for _ in range(M))
for i in (kub_anna & kub_boris,kub_anna - kub_boris,kub_boris - kub_anna):
    print(len(i))
    print(*(sorted(i)))
1
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
03.03.2018, 21:22  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
а так?
96/100 Test 21
Time Limit Exceeded
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
03.03.2018, 21:38
Python
1
2
3
4
5
6
7
8
9
    s1 = a.intersection(b)
    print(len(s1))
    print(' '.join(map(str, sorted(s1))))
    s2 = a.difference(b)
    print(len(s2))
    print(' '.join(map(str, sorted(s2))))
    s3 = b.difference(a)
    print(len(s3))
    print(' '.join(map(str, sorted(s3))))
Добавлено через 4 минуты
p.s. print(*some_list) работает настолько медленно, визуально видно, как числа по одному появляются

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Semen-Semenich Посмотреть сообщение
kub_anna
Некрасиво называть переменные русскими словами, записанными латиницей. Увидят на собеседовании - и на работу не возьмут.

1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,307
03.03.2018, 21:45

Не по теме:

Цитата Сообщение от Shamil1 Посмотреть сообщение
Некрасиво называть переменные русскими словами, записанными латиницей. Увидят на собеседовании - и на работу не возьмут.
это я достал с сайта на котором только начинал изучать питон, так что прошу понять и простить. а насчет работы, да мне уже о пенсии надо подумывать.


код разработчиков
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def print_set(some_set):
    print(len(some_set))
    print(*[str(item) for item in sorted(some_set)])
 
N, M = [int(s) for s in input().split()]
A_colors, B_colors = set(), set()
for i in range(N):
    A_colors.add(int(input()))
for i in range(M):
    B_colors.add(int(input()))
    
print_set(A_colors & B_colors)
print_set(A_colors - B_colors)
print_set(B_colors - A_colors)
1
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
03.03.2018, 21:54  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
p.s. print(*some_list) работает настолько медленно, визуально видно, как числа по одному появляются
91/100 Test 20
Time Limit Exceeded
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
код разработчиков
Сейчас проверю.

Добавлено через 3 минуты
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
код разработчиков
Test 20
Time Limit Exceeded
Хм
0
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
03.03.2018, 22:49
Python
1
2
3
s1 = a.intersection(b)
s2 = a.difference(s1)
s3 = b.difference(s1)
быстрее будет (для большого количества общих элементов возможно в разы).
2
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
03.03.2018, 23:55
У меня для 100 случайных чисел из диапазона 0-200 результаты для кода из сообщения с указанными номерами:
#1: 0.935
#4: 0.097
#5: 0.901
#7: 0.072

Добавлено через 1 минуту
Видно, что печать строки работает в 10 раз быстрее печати списка.

Добавлено через 12 минут
Реально - всё время уходит на печать.
1
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
04.03.2018, 01:05
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def f6(aa,bb):
    a = set(aa)
    b = set(bb)
    def print1(s):
        print(len(s))
        w = list(map(str, sorted(map(int, s))))
        w2 = ' '.join(w)
        print(w2)
    s1 = a.intersection(b)
    s2 = a.difference(s1)
    s3 = b.difference(s1)
    print1(s1)
    print1(s2)
    print1(s3)
Если закомментировать строку 8, то работает в 4 раза быстрее. Нет смысла ускорять оставшийся код.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.03.2018, 01:05
Помогаю со студенческими работами здесь

Как ускорить код
import random import string while True: words = random.randrange(12, 26) result_str =...

Нужно ускорить код
Условие Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается....

Ускорить асинхронный код
Записываю строки в таблицу так from sqlalchemy import insert import config import Table import asyncio from aiopg.sa import...

Как ускорить код?
Как ускорить мой код? def Authors(what, lang='en'): with warnings.catch_warnings(): warnings.simplefilter("ignore"); params =...

Как ускорить код
def a(n): if n==1: return 1 else: return 1+a(n-a(a(n-1))) n=int(input()) print(a(n))


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru