Форум » Массивы, сортировка, работа с файлами » Задача 4742 » Ответить

Задача 4742

yflzu@mail.ru: 1. В условии задачи допущена опечатка. "Необходимо определить наименьшее количество запросов, которые сервер обрабатывал одновременно в течение суток, начиная с момента K, и суммарное время, в течение которого обрабатывалось это максимальное количество запросов." Вместо слова "максимальное" должно стоять слово "минимальное". 2. В примере неправильно определено суммарное время работы: Наименьшее число запросов (2) выполнялось не только в интервалах [3700;5000] и [5700;6000], но и в интервале [1000;1300]. Поэтому общее время будет равно 1300 + 300 + 300 = 1900 3. В ответе допущена та же ошибка и не учтено время, когда эти 5765 запросов работали в интервале [K; K+2106].

Ответов - 7

Поляков: Спасибо, вы правы. Все исправлено, ответ не изменился.

yflzu@mail.ru: Программа 26-67.pas, предложенная А. Богдановым, неправильно решает данную задачу. Программа теряет самый первый интервал (об этом я уже писала ранее в пункте 3). Если учесть потерянный интервал, то общее время должно быть 22703. Кстати, если протестировать программу на данных из примера так же получается неверный ответ, который был у Вас ранее (до исправления). И осталась одна опечатка во фразе: Запишите в ответе два числа: наименьшее количество запросов, которые сервер обрабатывал одновременно в течение указанных суток, и суммарное время, в течение которого обрабатывалось это максимальное количество запросов.

Поляков: yflzu@mail.ru пишет: Если учесть потерянный интервал, то общее время должно быть 22703. Покажите, пожалуйста, ваше решение.И осталась одна опечатка во фразе:Спасибо, исправлено.


Поляков: yflzu@mail.ru пишет: Стоит поспорить с формулой подсчета времени: Это вопрос договоренности. В принципе, начало и окончание обработки запроса могут случиться в произвольное время. Для упрощения здесь считается, что эти события происходят в самом начале очередного такта (миллисекунды).

yflzu@mail.ru: Я решала задачу в Excel путем сортировки и дальнейшего анализа. Я обнаружила в файле 5765 запросов, которые начинаются ранее и заканчиваются позднее исследуемого интервала. Это и есть минимум. Далее я подсчитала время, когда кроме этих 5765 запросов больше ничего не обрабатывалось. Для этого следовало просуммировать промежутки между этими запросами: 2106 2590 3246 3467 5014 5431 5833 6177 7351 7716 9755 9941 11640 11841 13210 13337 21292 21578 25334 86400000

yflzu@mail.ru: Высылаю программу, которая даёт верный результат и для файла, и для примера. Если честно, она мне совсем не нравится (слишком много условий). [pre2]## assign(input, '26-66.txt'); var (N, Start) := ReadInteger2; var Line:=24*3600*1000; var a :=|(0,0)|*2*N; var j:=0; for var i:=0 to N-1 do begin var (x, y) := ReadInteger2; if y=0 then y:=Start+Line; if x<Start then x:=Start; if (x<Start+Line) and (y>Start) then begin a[2*j]:=(x-Start,1); a[2*j+1]:=(y-Start,-1); j+=1 end; end; sort(a); var (minK, minT, k, t0) := (0, 0, 0, 0); foreach var (t, dk) in a do if t=0 then (minK,k):=(minK+dk,k+dk) else if t<Line then begin k += dk; if k < minK then(minK, minT) := (k, 0); if k-dk = minK then minT += t - t0; t0 := t; end; if k=mink then minT +=Line -t0; print( minK, minT ); [/pre2]

Поляков: Спасибо. Согласен с вашим ответом и решением. Ответ и решение А. Богданова поправил.



полная версия страницы