anna16191
01.02.2022 00:55

(только c ++)
1 секунда
256 мегабайт
все чего-то боятся. кто-то боится темноты, кто-то боится высоты, кто-то боится общественных туалетов (все мы боимся общественных туалетов), кто-то боится долгов есть много страхов, но самый большой среди всех для unknown_user2019 - это выбор земля для посадки клубники. участок unknown_user2019 можно описать как матрицу с n строками и m столбцами. некоторые поля в матрице подходят для посадки клубники, а некоторые нет - там растут сорняки. unknown_user2019 ищет прямоугольные участки земли, которые полностью заполнены полями, подходящими для посадки клубники. эти виды прямоугольников называются подходящими прямоугольниками. также unknown_user2019 интересуется потенциальным значением всех полей в матрице. потенциальное значение каждого поля в матрице определяется как количество подходящих прямоугольников, содержащих это поле. так как unknown_user2019 испытывает проблемы, связанные с его страхами, он просит вас вычислить только сумму потенциальных значений всех полей. ввод первая строка содержит два натуральных числа n и m (1 ≤ n, m ≤ 2 000), размеры земли. следующие n строк содержат по m символов, представляющих ландшафт. каждый символ может быть или «.» (точка), которая представляет поле, подходящее для посадки, или «#», который представляет сорняки. выход выведите сумму всех потенциальных значений полей матрицы.
оценка в тестовых случаях, оценивающих в 20% от общего количества , он будет считать, что 1 ≤ n, m ≤ 10. в тестовых случаях, оцениваемых в дополнительные 30% от общего количества , он будет удерживать это 1 ≤ n, m ≤ 300.
вход
2 3
.#.
..#
выход
8
вход
3 3



выход
100
вход
3 4
..#.
#
#
выход
40
разъяснение первого образца теста: следующая матрица описывает потенциальные значения полей земли. сумма всех потенциальных значений составляет 8.
2 0 1
3 2 0

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
DariaTheBest5
05.07.2022 16:03
Общее решение, позволяющее удалять из строк любой "мусор"

// PascalABC.Net 3.0, сборка 1066
procedure CheckString(var s:string; var n:integer);
var
  i:integer;
begin
  i:=Length(s);
  while i>0 do begin
    if not(s[i] in ['a'..'z']) then Delete(s,i,1);
    Dec(i)
  end;
  n:=Length(s)
end;

var
  s1,s2:string;
  i,p,n1,n2:integer;
begin
  Write('Введите первую строку: '); Readln(s1);
  CheckString(s1,n1);
  if n1=0 then Writeln('Введенная строка не содержит допустимых символов')
  else begin
    Write('Введите вторую строку: '); Readln(s2);
    CheckString(s2,n2);
    if n2=0 then Writeln('Введенная строка не содержит допустимых символов')
    else
      { теперь обе строки содержат только маленькие латинские буквы }
      if n1=n2 then begin
        for i:=1 to n1 do begin
          p:=Pos(s1[i],s2);
          if p=0 then Break
          else Delete(s2,p,1)
          end;
        if Length(s2)=0 then Writeln('Решение имеется')
        else Writeln('Решения нет')
        end
      else
        Writeln('Решения нет');
    end
end.

Тестовое решение:
Введите первую строку: this is my own deal!
Введите вторую строку: Тест: *is  now=l2ead  my   sthi?
Решение имеется

Также имеется современное решение, которому пока что в школах не учат:
// PascalABC.Net 3.0, сборка 1066
begin
  var s1:=ReadString('Введите первую строку: ').Where(x->x in ['a'..'z']);
  if s1.Count=0 then
    Writeln('Введенная строка не содержит допустимых символов')
  else begin
    var s2:=ReadString('Введите вторую строку: ').Where(x->x in ['a'..'z']);
    if s2.Count=0 then
      Writeln('Введенная строка не содержит допустимых символов')
    else
      if s1.Except(s2).Count>0 then Writeln('Решения нет')
      else Writeln('Решение имеется')
    end
end.
0,0(0 оценок)
Ответ:
Belka1985
27.12.2021 11:29

Для  данной сортировки используем алгоритм сортировки слиянием

В начале разбиваем арбузы на 2 группы по 2Каждую группу взвешиваем и сортируем (т.е. всего 2 взвешивания)Теперь собираем вместе, сравниваем сначала более легкие арбузы и находим самый легкий (всего 3 взвешивания)Теперь сравниваем тяжелый арбуз, что в группе с самым легким и более легкий из другой группы, и определяем второй по легкости (всего 4 взвешивания)Потом взвешиваем оставшиеся арбузы и докладываем их  по порядку (всего 5 взвешивания)
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота