На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Сообщение: 1
ссылка на сообщение  Отправлено: 06.04.22 17:02. Заголовок: 27 задача про сбор мусора из досрочного ЕГЭ2022


Вариант решения будет ниже.

Текст задачи:
-------------------------------------------------------------------------------------------
В городе M расположена кольцевая автодорога длиной в N километров с
движением в обе стороны. На каждом километре автодороги расположены
пункты приема мусора определенной вместимости. В пределах кольцевой
дороги в одном из пунктов сборки мусора собираются поставить
мусороперерабатывающий завод таким образом, чтобы стоимость доставки
мусора была минимальной. Стоимость доставки мусора вычисляется, как
вместимость пункта сбора умноженная на расстояние от пункта сбора
мусора до мусороперерабатывающего завода. Если
мусороперерабатывающий завод находится рядом с пунктом сбора
расстояние считается нулевым. Контейнеры нумеруются с 1 до N.
Рядом с каким пунктом сбора мусора нужно поставить
мусороперерабатывающий завод?
Описание входных данных:
Первое число N — количество контейнеров для мусора. Последующие N
чисел — количество килограмм мусора, которое производится на точке.
Описание выходных данных:
Одно число — номер контейнер для мусора рядом с которым стоит
расположить перерабатывающий завод.
Пример организации входных данных:
6
8
20
5
13
7
19
Для данного примера ответ — 6 (7⸱1 + 13⸱2 + 5⸱3 + 20⸱2 + 8⸱1 + 19⸱0).
--------------------------------------------------------------------------------------

Файлы тут: https://4ege.ru/trening-informatika/64504-variant-s-dosrochnogo-etapa-2022-po-informatike.html

--------------------------------------------------------------------------------------

Вариант решения:

 

def r(i,p,N):
'''
вычисляем растояние между точкой сбора мусора p и мусорного контейнера i
как между стрелками на циферблате с числами 1..N;
p - точка сбора мусора (мусорозавод), часовая стрелка;
i - мусорный ящик, минутная стрелка
'''
l=abs(p-i)
if l<=N//2:
return l
else:
return N-l

# из файла с данными удалите первую строку с N
s=open('27-A.txt','r').read().splitlines()
s=list(map(int,s))

N=len(s)

smin=10**15
pmin=10**15

# подсчет стоимости своза мусора в точку p
for p in range(1,N+1):
ss=[] # массив расстояний от точки p
for k in range(len(s)):
t=r(k+1,p,N)
ss.append(t)

st=0 # сюда складываем стоимости сбора мусора

for i in range(1,N+1):
st+=s[ i-1]*ss[ i-1]
if st<smin:
smin=st
pmin=p

print('>>>',smin,pmin)




----------------------------------------------

Для файла B.txt:

- считаем для p (точка сбора) - цикл с шагом 10000
- находим что искомая p в районе 40000
- сужаем поиск с 38000 до 42000 с шагом 1000
и тд за 5 минут есть ответ.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]





Сообщение: 1
ссылка на сообщение  Отправлено: 18.04.22 09:55. Заголовок: 27 досрочный


###
uses school;
assign(input,'27-B.txt');reset(input);
var n:=ri;
var s1,s2,s3,s4,m,p:int64;
var a:=new int64[n*2+1];// двойной размер
var nd2:=n div 2; // половина N
for var i:=1 to nd2+1 do
begin
var x:=ri;
s1+=x*(i-1); // стоимость доставки до 1 пункта (1 половина + дальний пункт)
s3+=x;// сумма данных первых N+1
a:=x;a[i+n]:=x
end;
s3-=a[1];
for var i:=nd2+2 to n do
begin
var x:=ri;
s2+=x*(n-i+1);// стоимость доставки до 1 пункта (2 половина )
s4+=x;// сумма данных остальных N-1
a:=x;
a[i+n]:=x
end;

m:=s1+s2; // сумма доставки до 1 пункта
p:=1;
for var i:=2 to n do // перебор для остальных пунктов
begin
s1:=s1-s3+a[i+nd2]*nd2;
s3:=s3+a[i+nd2]-a;
s2:=s2+s4+a[i-1]-a[i+nd2]*nd2;
s4:=s4+a[i-1]-a[i+nd2];
if s1+s2<m then (m,p):=(s1+s2,i);

end;
pr(p) //ответ

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 29.04.22 13:35. Заголовок: вместо a, a..


вместо a, a[ i]

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
ссылка на сообщение  Отправлено: 29.04.22 13:38. Заголовок: ### uses school; ass..


###
uses school;
assign(input,'27-99b.txt');reset(input);
var n:=ri;
var s1,s2,s3,s4,m,p:int64;
var a:=new int64[n*2+1];// двойной размер
var nd2:=n div 2; // половина N
for var i:=1 to nd2+1 do
begin
var x:=ri;
s1+=x*(i-1); // стоимость доставки до 1 пункта (1 половина + дальний пункт)
s3+=x;// сумма данных первых N+1
a[ i]:=x;a[i+n]:=x
end;
s3-=a[1];
for var i:=nd2+2 to n do
begin
var x:=ri;
s2+=x*(n-i+1);// стоимость доставки до 1 пункта (2 половина )
s4+=x;// сумма данных остальных N-1
a[ i]:=x;
a[i+n]:=x
end;

m:=s1+s2; // сумма доставки до 1 пункта
p:=1;
for var i:=2 to n do // перебор для остальных пунктов
begin
s1:=s1-s3+a[i+nd2]*nd2;
s3:=s3+a[i+nd2]-a[ i];
s2:=s2+s4+a[i-1]-a[i+nd2]*nd2;
s4:=s4+a[i-1]-a[i+nd2];
if s1+s2<m then (m,p):=(s1+s2,i);

end;
pr(p) //ответ

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2455
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет