В данной задаче надо быстро проверять, находиться ли в таблице Менделеева
элемент $s_i + s_{i+1}$(конкатенация двух символов строки $s$).
Для этого в C++, можно воспользоваться map'ом. Сложность будет $O(NlogM)$
Так же можно завести буленовый массив 26x26(в паскале можно сделать array['a'..'z', 'a'..'z'] of
boolean). И для каждого элемента хранить true, если он есть в таблице Менделеева, иначе false.
Или можно просто хранить элементы в хэш-таблице. Тут ограничения не большие и методов много. То
есть сложность при таких методах будет $O(N)$
you can use :
in Pascal - Uses StrUtils => reversestring;
in C++ - reverse;
then check;
:)
Интересная задача.
Все что нужно сделать, это посчитать суммарную площадь четырех прямоугольников на плоскости.
Прямоугольники задаются координатами противоположных углов.
Порядок решения:
- Заведем двумерную матрицу [0...2000, 0...2000] и заполним ее нулями.
-
Считав координаты, увеличим их на 1000.
-
Заполни элементы нашей матрицы, попадающие в новый диапазон единичками.
-
Количество единиц в матрице и есть ответ.
Примечание:
- Я решал ее на С++, где координаты не могут быть отрицательными, поэтому все увеличивал на 1000. Если язык, на котором вы пишете позволяет создать матрицу [-1000...1000, -1000...1000], то задача становится еще легче.
- При максимальном тесте, матрица будет содержать 2000*2000=4000000 элементов, так что с памятью и временем преблем не должно быть.
- Так, как нас интересуют только два возможных значения, то матрицу можно задать типом bool (boolean).
_Вроде все, надеюсь, что все понятно и хоть кому-нибудь это поможет._
Считываем текст до того пока не встретим символ $. Считывая каждое слово складываем кол-во ее букв. в конце делим количество слов на количество букв. Точки и пробел не принимать за символы
На языке Ява есть очень часто употребляемый инструмент StringTokenizer. С помощью него можно разбить на токены удалить некоторые символы и т.д
Здесь можно использовать,на языке Java, готовую функцию(contains) для строк. Думаю лучше честно проверить,пускаем цикл и проверяем используя substring(); Фишка здесь,что может даваться не одно слово,а целый текст.
Бізде данышпанның жүру жолы бар, енді тек соны массив индексінің орнына қоямыз және бірден ақтық айналмалы -s-қа қосып отырамыз.
Ең соңында s-ты жазамыз.
На каждом шагу берем минимальное из В массива, а А массив просто должен подходить.
Можно отсортировать и проверить, но я решил попробовать сложить числовые значения каждого символа и проверить. У меня прошла..:-)
Тут можно просто отсортировать строки и проверить одинаковые ли они.
Из всех возможных решений этот пишется быстро и легко (на С++). Потому что в С++ есть структура данных string и функция sort. С помощью них решение занимает всего 5-6 строк.
Матрица симметрична относительно главной диагонали, только в случае когда для любых i и j a[i][j] = a[j][i]. Осталось это проверить.
В этой задаче требовалось аккуратно реализовать функцию подсчета очков. Для этого будем просматривать строки сверху вниз. Для каждой очередной строки будем проверять, является ли она полностью заполненной. Кроме того, будем поддерживать переменную c — количество полностью
заполненных подряд идущих строк до нашей строки. Если очередная строка целиком заполнена, то увеличиваем c на единицу, иначе обнуляем c. Но перед обнулением ведем подсчет очков.
Источник: neerc.ifmo.ru/school
Есть много способов решения этой задачи.
Я предлогаю свой.
Можно взять XOR двух стрингов и потом посчитать еденицы в результате.
Если едениц не 0 и не 2 то ответ NO. если 2 то нужно проверить рядом они или нет.
Вот и все.
Остальные мелочи найдите сами ;)
Задачу можно решать, например, таким образом. Переведем заданное во входном файле время в секунды, считая началом отсчета начало суток. Например, время 12:30:00 соответствует 12 * 3600 + 30 * 60 = 45000 секундам. Аналогично переведем требуемый интервал в секунды и прибавим его к начальному моменту времени — получим требуемое время, только заданное в секундах. Затем переведем это время в требуемый формат и выведем в выходной файл. При таком решении единственная возникающая проблема заключается в том, что полученный ответ может превысить максимально допустимое значение типа данных LongInt. Для хранения числа секунд можно было использовать тип данных Int64 языка FreePascal или тип данных long long int языка GCC.
Другой подход к решению состоит в том, что к начальному числу секунд прибавляется число секунд временного интервала, полученное число секунд переводится в минуты и секунды, минуты “запоминаются”, а секунды записываются как секунды ответа. Далее прибавим число минут интервала и “запомненные” минуты к начальным минутам, опять “запомним” лишние часы и т.д. При таком решении типа данных LongInt достаточно .