Прикреплённый файл «pegsNropes.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 В дощечке в один ряд вбиты гвоздики. Любые два гвоздика можно соединить
5 ниточкой. Требуется соединить некоторые пары гвоздиков ниточками так, чтобы
6 к каждому гвоздику была привязана хотя бы одна ниточка, а суммарная длина всех
7 ниточек была минимальна.
8 Ввод: X-координаты гвоздиков
9 '''
10
11 # Сначала отсортируем гвоздики по возрастанию координат. Решим следующую подзадачу:
12 # найдем минимальную длину веревочек, необходимую для того, чтобы связать
13 # первые k гвоздиков согласно условию (обозначим требующуюся для этого длину
14 # веревочек ak).
15
16 # Можно считать, что любая ниточка связывает два соседних гвоздика (иначе ее
17 # можно разрезать на несколько частей, связывающих все гвоздики между теми,
18 # которые связывала наша ниточка изначально).
19
20 # Научимся вычислять ak. Заметим, что в оптимальной конфигурации (для первых
21 # k гвоздиков) между последним (k-м) и предпоследним ((k-1)-м) гвоздиками
22 # ниточка есть всегда, а вот между предпоследним ((k-1)-м) и предпредпоследним
23 # ((k-2)-м) она может либо быть, либо не быть. В первом случае первые k-1
24 # гвоздиков удовлетворяют условию задачи, во втором - первые k-2. Значит
25 # ak=min(ak-1,ak-2)+l(k-1,k), где l(k-1,k) - расстояние между k-м и k-1-м
26 # гвоздиками (в отсортированном массиве).
27
28 Nails=sorted([int(n) for n in raw_input().split()])
29 N=len(Nails)
30
31 Links=[0]+[Nails[i]-Nails[i-1] for i in xrange(1,N)]
32 Ropes=[0,Links[1],Links[1]+Links[2],Links[1]+Links[3]]+[0]*(N-4)
33 for i in xrange(4,N):
34 Ropes[i]=min(Ropes[i-1],Ropes[i-2])+Links[i]
35 print Ropes[-1]
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2012-04-03 14:39:42, 0.1 KB) [[attachment:VyshlovA_stairs.py]]
- [получить | показать] (2012-04-04 14:57:12, 2.4 KB) [[attachment:pegsNropes.py]]
- [получить | показать] (2012-04-04 14:57:24, 1.3 KB) [[attachment:stairs.py]]
Вам нельзя прикреплять файлы к этой странице.