Нажимая на кнопку "Задать вопрос", я даю согласие на обработку персональных данных

Задать вопрос
Задать вопрос
  • Задача «Вирусы»
    Для моделирования различных объектов часто применяются так называемые клеточные поля. В простейшем случае – это прямоугольные таблицы, характеризующие некоторую область, а в каждой ячейке таблицы записывается какая-либо информация об исследуемом объекте. В биологии для моделирования распространения вирусов на плоской области в каждой ячейке помечается наличие вируса, а его распространение осуществляется в соседние ячейки по вертикали и горизонтали за одну единицу времени. Некоторые клетки обладают иммунитетом, заразить их невозможно и через них не распространяются вирусы. Требуется написать программу, которая определяет минимально возможное число вирусов, с помощью которых можно заразить всю исследуемую прямоугольную область (за исключением защищённых клеток).
    Описание входных данныхВ первой строке входного файла input.txt записаны два натуральных числа n и m -размеры таблицы (количество строк и столбцов соответственно). Известно, что 1 n, m 100. Во второй строке вначале записано одно число k – количество защищённых клеток, а далее записаны 2k чисел – координаты этих клеток xi, yi (0 k n m, 1 xi n, 1 yi m).
    Описание выходных данных
    В единственную строку выходного файла output.txt нужно вывести одно число –минимально возможное число вирусов.
    Примеры входных и выходных данных
    input.txt
    4 5 3 1 3 2 1 2 2
    output.txt 2

    • 25 October 2013
    • Ответ оставил:

    Uses GraphABC;
    const types = 3;
    rmax = 4;
    CanEat = rmax;
    eps = 0.00001;
    epsustupi = 0.1;
    strahkraj = 3;
    ustupi = CanEat*10;
    BkColor = clBlack;
    Height = 600;
    Width = 780;
    xmin = 10;
    ymin = 10;
    xmax = Width - 100;
    ymax = Height - 140;
    Type
    fishtype = class
    c, CanRazm, MaxKol, Kol, MaxLife, MinFood: integer;

    Speed, See: real;
    constructor create(ac, aCanRazm, aMaxKol, aMaxLife, aMinFood:integer; aSpeed, aSee: real);
    begin
    c:= ac; CanRazm:= aCanRazm; MaxKol:= aMaxKol; Kol:= 1;
    MaxLife:= aMaxLife; MinFood:= aMinFood; Speed:= aSpeed; See:= aSee
    end;
    procedure ShowKol(y: integer);
    var s: string;
    begin
    SetFontColor(c);
    TextOut(xmax + 20, y, ' ');
    str(Kol, s);
    TextOut(xmax + 20, y, s);
    end;
    end;
    var opisanie: array[0..types] of fishtype;
    Type
    fish = class
    x, y, r, dx0, dy0: real;
    tip, life, razm, status, food: integer;

    next, prev: fish;
    constructor Create(ax, ay, ar: real; atip: integer; aprev, anext: fish);
    begin
    x:= ax; y:= ay; r:= ar; tip:= atip; prev:= aprev; next:= anext;
    life:= 0; razm:= 0; dx0:= random; dy0:= random; status:= 1; food:= 0;
    end;
    procedure show;
    begin
    SetPenColor(opisanie[tip].c);
    circle(round(x), round(y), round(r))
    end;
    procedure hide;
    begin
    SetPenColor(BkColor);
    circle(round(x), round(y), round(r))
    end;
    destructor Destroy;
    begin
    hide;
    opisanie[tip].kol:= opisanie[tip].kol - 1;
    opisanie[tip].ShowKol(tip*40 + 20);
    end;
    procedure moveto(dx, dy: real);
    begin
    hide;
    x:= x + dx; y:= y + dy;
    if x > xmax then x:= xmax;
    if x < xmin then x:= xmin;
    if y > ymax then y:= ymax;
    if y < ymin then y:= ymin;
    show
    end;
    procedure MakeDeti(var mama, StartAkula, KonAkula, StartKilka, KonKilka : fish);
    var d: fish;
    begin
    razm:= 0;
    food:= 0;
    d:= fish.create(x, y, r, tip, mama, next);
    next.prev:= d;
    next:= d;
    if mama = KonAkula then KonAkula:= d;
    if mama = KonKilka then KonKilka:= d;
    opisanie[tip].kol:= opisanie[tip].kol + 1;
    opisanie[tip].ShowKol(tip*40 + 20);
    end;
    procedure step(var ribka, StartAkula, KonAkula, StartKilka, KonKilka : fish);
    var i, imin: integer;
    dx, dy, d, dx2, dy2, dmin: real;
    t, trup, found: fish;
    FoundOhot: boolean;
    begin
    status:= 1;
    dx:= 0; dy:= 0;
    if tip > 0 then
    begin
    t:= StartAkula;
    if t<>nil then
    repeat
    d:= sqrt((x - t.x)*(x - t.x) + (y - t.y)*(y - t.y));
    if d < opisanie[tip].See then
    begin
    if d < eps then d:= eps;
    dx2:= (x - t.x)/(d*d);
    dy2:= (y - t.y)/(d*d);
    dx:= dx + dx2;
    dy:= dy + dy2;
    status:= 2;
    end;
    t:= t.next
    until t = KonAkula.next;
    if x - xmin < opisanie[tip].See then dx:= dx + 1/((x - xmin + eps)*strahkraj);
    if xmax - x < opisanie[tip].See then dx:= dx + 1/((x - xmax - eps)*strahkraj);
    if y - ymin < opisanie[tip].See then dy:= dy + 1/((y - ymin + eps)*strahkraj);
    if ymax - y < opisanie[tip].See then dy:= dy + 1/((y - ymax - eps)*strahkraj);
    d:= sqrt(dx*dx + dy*dy);
    if d < eps then
    begin
    dx:= 2*status*random*opisanie[tip].Speed - status*opisanie[tip].Speed;
    dy:= 2*status*random*opisanie[tip].Speed - status*opisanie[tip].Speed
       

    • НЕ НАШЛИ ОТВЕТ?
    Если вас не устраивает ответ или его нет, то попробуйте воспользоваться поиском на сайте и найти похожие ответы по предмету школьной программы: информатика.
    На сегодняшний день (22.04.2026) наш сайт содержит 109576 вопросов, по теме: информатика. Возможно среди них вы найдете подходящий ответ на свой вопрос.
  • Нажимая на кнопку "Ответить на вопрос", я даю согласие на обработку персональных данных

    Ответить на вопрос

Последние опубликованные вопросы

Сообщение записанное буквами 32 символьного алфавита содержит 20 символов. Чему равен информационный объём этого сообщения в байтах? Объем видеопамяти для хранения страниц изображения при условии, что разрешающая способность двух с дисплея плана 640*350 пикселей, а количество используемых цветов-16? Комитет можно составить из 3 или 5 судей. Есть 5 кандидатов, точность предсказаний которых приведена в таблице. Составьте ансамбль судей, имеющий наибольшую из возможных точность предсказания. В ан... 16. Шифр кодового замка является двузначным числом. Буратино забыл код, но помнит, что сумма цифр этого числа, сложенная с их произведением, равна самому числу. Напишите все возможные варианты кода... S<13 и не s чётное Получено сообщение, информационный объем которого равен 32 битам. Чему равен этот объем в байтах Каждый переданный кодовый символ может принят ошибочно с фиксированным вероятностью P Решать задачку по этой формуле P(zj/Uk) = P/N-1 при j≠k I-p при j=k В дощечку в ряд вбито 10 гвоздиков, таким образом, получилось 9 последовательных промежутков между ними. Длины промежутков (подряд, слева направо) оказались равны 7, 2, 8, 4, 3, 9, 5, 1, 6. Между н... Кто может подсказать почему не работает секундомер? (не добирает 60 секунд следовательно не переходит на следующую минуту) язык Python import time from tkinter import * from datetime import datetim... Pyhon (Информатика) Решить задачу: На тренировках спортсмен ежедневно пробегает некоторую дистанцию, с каждым днем увеличивая ее на 10%. Составить программу, определяющую по расстоянию, преодоленн... совокупность средств и правил взаимодействия человека с компьютером​ Что такое информатика в ИБ кратко
*{ message }*