B. Чистка данныхОграничение медли: 1.0 секундыОграничение памяти: 64 МБПрежде чем

B. Очистка данных
Ограничение медли: 1.0 секунды
Ограничение памяти: 64 МБ
До этого чем применить к данным методы машинного обучения, проводится процесс чистки данных. Необходимость чистки связана с тем, что в данных могут быть аномальные элементы: дубли, оплошности ввода и выбросы. Если чистка данных не будет выполнена, то методы анализа данных могут дать неправильный результат!
Осмотрим умственную систему предвещания погоды. Такая система непрерывно получает данные о текущей температуре воздуха с огромного количества метеостанций. Каждая метеостанция передает поочередно данные о температуре в виде пары целых чисел. 1-ое число это время, которое измеряется количеством секунд, прошедших с начала суток. 2-ое число это температура в градусах Цельсия.
Очистка данных делается в три этапа. Поначалу удаляются дубли когда информация об одном и том же медли измерения и той же температуре воздуха повторилась несколько раз попорядку (первый элемент в таковой последовательности схожих данных дублем не считается). После удаления дублей из последовательности удаляются оплошности ввода времени - когда время в новой паре не превосходит время в предыдущей паре или превосходит количество секунд в сутках. На третьем этапе из последовательности удаляются выбросы пары с аномальным значением температуры, когда измеренная температура по модулю больше 40 градусов либо отличается от предыдущего значения более чем на 10 градусов. Для вас необходимо написать программу, которая будет определять в начальной последовательности данных количество устраняемых дублей, выбросов и ошибок. Можете считать, что самая 1-ая пара в последовательности не относится к аномальным.
Начальные данные
В первой строке входных данных записано целое число n количество измерений (1 n 103). В следующих n строчках записаны целые числа t и T, разбитые пробелом время измерения и значение температуры воздуха. Все числа по модулю не превосходят 109.
Итог
Выведите три целых числа, разбитых пробелами количество дублей, ошибок ввода медли и выбросов в последовательности исходных данных.
Пример
начальные данные итог

6
10 5
8 5
8 5
8 5
12 25
13 10



2 1 1

Замечания
8 5 дублируется трижды. После удаления 2-ух копий остается одна пара 8 5, которая является ошибкой ввода (т.к. время 8 меньше 10 из предыдущей пары). После ее удаления остается последовательность из 3-х пар 10 5, 12 25, 13 10, в которой 12 25 выброс (t = 25 более чем на 10 превосходит 5). После удаления выброса остается очищенная последовательность 10 5, 13 10
В этой задачке есть тесты, в которых находятся только дубли (суммарно 20 баллов), оплошности ввода (также 20 баллов) и выбросы (еще 20 баллов). Оставшиеся испытания включают различные типы не нормальных частей (40 баллов).

Задать свой вопрос
1 ответ

PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018

Внимание! Если программа не работает, обновите версию!

begin

 var n := ReadInteger;

 var L := new Listlt;(integer, integer)gt;;

 loop n do

 begin

   L.Add(ReadInteger2)

 end;

 var k := L.Count;

 L := L.Distinct.ToList; // этап 1

 var k1 := L.Count;

 Print(k - k1);

 (k, k1) := (k1, 0); // этап 2

 var St := new Stacklt;integergt;;

 var m := L.First[0]; // время

 for var i := 1 to k - 1 do

   if L[i][0] lt;= m then

   begin

     St.Push(i);

     Inc(k1)

   end

   else m := L[i][0];

 for var i := 1 to k1 do

   L.RemoveAt(St.Pop);

 Print(k1);

 (k, k1) := (L.Count, 0); // шаг 3

 m := L.First[1]; // температура

 for var i := 1 to k - 1 do

   if Абс(L[i][1] - m) gt; 10 then

   begin

     St.Push(i);

     Inc(k1)

   end

   else m := L[i][1];

 for var i := 1 to k1 do

   L.RemoveAt(St.Pop);

 Println(k1);

end.

Пример

6

10 5

8 5

8 5

8 5

12 25

13 10

2 1 1

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт