|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
||||||
Задача про водопровод25.12.2011, 22:05. Показов 4177. Ответов 22
Метки нет (Все метки)
Город Восточный постоянно страдает от недостатка воды. Для устранения этой проблемы была построена новая водопроводная труба. Строительство трубы началось с обоих концов одновременно, и спустя некоторое время половины соединились. Ну, почти. Первая половина трубы заканчивалась в точке (x1, y1), а вторая - в точке (x2, y2).
К сожалению, осталось лишь несколько отрезков трубы различной длины. Более того, из-за специфики местной технологии трубы могут быть проложены только в направлении с севера на юг или с востока на запад и соединяются, образуя или прямую, или угол 90 градусов. Требуется, зная длины отрезков труб L1, L2, ..., LK и количество отрезков каждой длины C1, C2, ..., CK, сконструировать трубу, соединяющую две заданные точки, или определить, что это невозможно. Ограничения: 1 <= K <= 4, 1 <= x1, y1, x2, y2, Li <= 1000, 1 <= Ci <= 10, все числа целые, время 3 с. Ввод из файла wpipe.in. В первой строке находятся числа x1, y1, x2, y2, K, затем 2K чисел: L1, L2, ..., LK, C1, C2, ..., CK. Вывод в файл wpipe.out. Вывести одно число - минимальное количество нужных отрезков труб или -1, если соединение невозможно. Примеры Ввод 1 Ввод 2 5 5 5 6 1 2 10 20 10 60 50 2 70 30 2 2 Вывод 1 Вывод 2 -1 4 моя попытка решить:
0
|
||||||
| 25.12.2011, 22:05 | |
|
Ответы с готовыми решениями:
22
Задача водопровод Задача про дату! Задача про Лестницу |
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||
| 26.12.2011, 06:23 | ||||
|
Сначало ошибки в коде (см комментарии): Теперь переформулирую задачу: Есть два расстояния: abs(x1-x2) и abs(y1-y2) и есть K труб длиннами: L1, L2, ..., LK и их количество C1, C2, ..., CK Задача: можно ли набрать из заданного набора труб два расстояния - abs(x1-x2) и abs(y1-y2). Если можно, то вывести результат, в котором количество труб используемых в заданном наборе будет минимальным.
0
|
||||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
|
| 26.12.2011, 12:07 [ТС] | |
|
то есть должно выполняться условие:
abs(x1-x2)+abs(y1-y2)==c[i]*l[i]+c[j]*l[j]; а как мы определим когда количество труб будет минимальным?
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||
| 26.12.2011, 15:58 | ||
|
Должно выполняться следующее условие: abs(x1-x2)= l[0]*x0 + l[1]*x1 + ... + l[k-1]*xk-1 abs(y1-y2)= l[0]*y0 + l[1]*y1 + ... + l[k-1]*yk-1 xi и yi лежат в диапазоне от 0 до c[i] Причем для любого i должно соблюдаться условие xi+yi<=c[i]
1
|
||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
||
| 27.12.2011, 09:37 [ТС] | ||
|
несовсем понимаю откуда эти x[i], y[i] брать да еще связать с c[i]
0
|
||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||
| 27.12.2011, 10:09 | |||
|
и 2 трубы длинной 17 Нужно из них набрать 2 отрезка: один длинной 19, второй длинной 4. Такие отрезки можно набрать: Первый (длинной 19) набираем так: одна труба длинной 17 и одна труба длинной 2 Второй (длинной 4) набираем так: две трубы длинной 2 Но с таким набором труб нельзя например набрать: - два отрезка длинной 19 и 6 (не хватит труб длинной 2) - два отрезка длинной 19 и 5 (из заданных труб невозможно набрать длинну 5)
0
|
|||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
|||
| 27.12.2011, 13:45 [ТС] | |||
|
Добавлено через 2 часа 39 минут
0
|
|||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 27.12.2011, 14:18 | |
|
0
|
|
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
||||||
| 27.12.2011, 23:08 [ТС] | ||||||
|
как нужно учесть условие минимальности количества нужных отрезков труб
Добавлено через 1 час 29 минут
почему то проблема с выводом, то есть он неправильно выводит..
0
|
||||||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||
| 28.12.2011, 05:43 | ||||||
|
Давайте попробуем рекурсией:
0
|
||||||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
|
| 28.12.2011, 09:48 [ТС] | |
|
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||||||
| 28.12.2011, 11:55 | |||||||
|
Добавлено через 22 минуты Вот так попробуйте:
0
|
|||||||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
|||
| 28.12.2011, 13:43 [ТС] | |||
|
Добавлено через 9 минут я сам вручную ввожу также как в примере то есть 5 5 5 6 1 2 10 и должно выводить -1 а она то выводит
0
|
|||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 28.12.2011, 13:47 | |
|
у меня последний вариант получил AC.
Только нужно в коде поменять название файлов ввода вывода, на те которые используются в тестирующей системе.
0
|
|
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
|
| 28.12.2011, 17:45 [ТС] | |
|
спасибо большое теперь действительно все работает
Добавлено через 3 часа 48 минут извините а вы не могли бы подробно разобрать процедуру rec а именно : какие аргументы она принимает за что они отвечают, ну и в общем принцип весь что откуда... преподаватель очень строго все будет проверять сказал
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||
| 28.12.2011, 19:07 | ||
|
Сможете объяснить почему в тесте: 20 10 60 50 2 70 30 2 2 ответ 4 ?
0
|
||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
||
| 28.12.2011, 19:15 [ТС] | ||
|
0
|
||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||
| 28.12.2011, 19:24 | ||
|
а какие трубы и как используются? Чтобы понять как решается задача, самое первое - нужно понять условие. Этот тест и есть понимание условия. Я могу сейчас написать комментарии к функции rec(), но 100% что вы не поймете смысл этой функции, пока не поймете самого задания.
0
|
||
|
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
|
||
| 28.12.2011, 19:39 [ТС] | ||
|
то есть мы берем самую длинную трубу и примеряемся так скажем (строим горизонтальную составляющую), затем также примеряемся по вертикали, и если мы добрались до (x2,y2) то значит можно построить такой водопровод. количество труб в будем не больше c суммых всех отрезков если я правильно понимаю
0
|
||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|||||||
| 28.12.2011, 19:56 | |||||||
0
|
|||||||
| 28.12.2011, 19:56 | |
|
Помогаю со студенческими работами здесь
20
Задача про гостей Задача про зайца Задача про ракету задача про массивы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|