Задачи на реализацию → Разбор Райхан и таблица Менделеева 1

 
-1
 

В данной задаче надо быстро проверять, находиться ли в таблице Менделеева

элемент $s_i + s_{i+1}$(конкатенация двух символов строки $s$).

Для этого в C++, можно воспользоваться map'ом. Сложность будет $O(NlogM)$

Так же можно завести буленовый массив 26x26(в паскале можно сделать array['a'..'z', 'a'..'z'] of

boolean). И для каждого элемента хранить true, если он есть в таблице Менделеева, иначе false.

Или можно просто хранить элементы в хэш-таблице. Тут ограничения не большие и методов много. То

есть сложность при таких методах будет $O(N)$

Задачи на реализацию → Разбор Перестановка строк 3

 
-1
 
you can use : in Pascal - Uses StrUtils => reversestring; in C++ - reverse; then check; :)

Задачи на реализацию → Разбор Приготовление сэндвича 2

 
3
 

Интересная задача.

Все что нужно сделать, это посчитать суммарную площадь четырех прямоугольников на плоскости.

Прямоугольники задаются координатами противоположных углов.

Порядок решения: - Заведем двумерную матрицу [0...2000, 0...2000] и заполним ее нулями.

  • Считав координаты, увеличим их на 1000.

  • Заполни элементы нашей матрицы, попадающие в новый диапазон единичками.

  • Количество единиц в матрице и есть ответ.

Примечание:

  • Я решал ее на С++, где координаты не могут быть отрицательными, поэтому все увеличивал на 1000. Если язык, на котором вы пишете позволяет создать матрицу [-1000...1000, -1000...1000], то задача становится еще легче.
  • При максимальном тесте, матрица будет содержать 2000*2000=4000000 элементов, так что с памятью и временем преблем не должно быть.
  • Так, как нас интересуют только два возможных значения, то матрицу можно задать типом bool (boolean).

_Вроде все, надеюсь, что все понятно и хоть кому-нибудь это поможет._

Задачи на реализацию → Разбор Average length 1

 
1
 

Считываем текст до того пока не встретим символ $. Считывая каждое слово складываем кол-во ее букв. в конце делим количество слов на количество букв. Точки и пробел не принимать за символы

Задачи на реализацию → Разбор Удаление пробелов 1

 
-1
 

На языке Ява есть очень часто употребляемый инструмент StringTokenizer. С помощью него можно разбить на токены удалить некоторые символы и т.д

Задачи на реализацию → Разбор Найди 1543 1

 
0
 

Здесь можно использовать,на языке Java, готовую функцию(contains) для строк. Думаю лучше честно проверить,пускаем цикл и проверяем используя substring(); Фишка здесь,что может даваться не одно слово,а целый текст.

Задачи на реализацию → Разбор" Хождение за золотом - 1" 1

 
0
 
Бізде данышпанның жүру жолы бар, енді тек соны массив индексінің орнына қоямыз және бірден ақтық айналмалы -s-қа қосып отырамыз. Ең соңында s-ты жазамыз.

Задачи на реализацию → Разбор День рождения 1

 
1
 

На каждом шагу берем минимальное из В массива, а А массив просто должен подходить.

Задачи на реализацию → Разбор Перестановка строк 2

 
-1
 

Можно отсортировать и проверить, но я решил попробовать сложить числовые значения каждого символа и проверить. У меня прошла..:-)

Задачи на реализацию → Разбор Перестановка строк 1

 
0
 

Тут можно просто отсортировать строки и проверить одинаковые ли они. Из всех возможных решений этот пишется быстро и легко (на С++). Потому что в С++ есть структура данных string и функция sort. С помощью них решение занимает всего 5-6 строк.

Задачи на реализацию → Разбор Симметричная матрица 1

 
-1
 

Матрица симметрична относительно главной диагонали, только в случае когда для любых i и j a[i][j] = a[j][i]. Осталось это проверить.

Задачи на реализацию → Разбор Тетрис 1

 
1
 

В этой задаче требовалось аккуратно реализовать функцию подсчета очков. Для этого будем просматривать строки сверху вниз. Для каждой очередной строки будем проверять, является ли она полностью заполненной. Кроме того, будем поддерживать переменную c — количество полностью заполненных подряд идущих строк до нашей строки. Если очередная строка целиком заполнена, то увеличиваем c на единицу, иначе обнуляем c. Но перед обнулением ведем подсчет очков.

Источник: neerc.ifmo.ru/school

Задачи на реализацию → Analysis Передача данных 1

 
-2
 

Есть много способов решения этой задачи. Я предлогаю свой.
Можно взять XOR двух стрингов и потом посчитать еденицы в результате.
Если едениц не 0 и не 2 то ответ NO. если 2 то нужно проверить рядом они или нет.

Вот и все. Остальные мелочи найдите сами ;)

Задачи на реализацию → Analysis Таймер 1

 
1
 

Задачу можно решать, например, таким образом. Переведем заданное во входном файле время в секунды, считая началом отсчета начало суток. Например, время 12:30:00 соответствует 12 * 3600 + 30 * 60 = 45000 секундам. Аналогично переведем требуемый интервал в секунды и прибавим его к начальному моменту времени — получим требуемое время, только заданное в секундах. Затем переведем это время в требуемый формат и выведем в выходной файл. При таком решении единственная возникающая проблема заключается в том, что полученный ответ может превысить максимально допустимое значение типа данных LongInt. Для хранения числа секунд можно было использовать тип данных Int64 языка FreePascal или тип данных long long int языка GCC. Другой подход к решению состоит в том, что к начальному числу секунд прибавляется число секунд временного интервала, полученное число секунд переводится в минуты и секунды, минуты “запоминаются”, а секунды записываются как секунды ответа. Далее прибавим число минут интервала и “запомненные” минуты к начальным минутам, опять “запомним” лишние часы и т.д. При таком решении типа данных LongInt достаточно .