ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам |
К задаче N

Проект МЦНМО
при участии
школы 57
Подтемы:
Фильтр
Сложность с по   Класс с по  
Выбрана 1 задача
Версия для печати
Убрать все задачи

Предложенный выше алгоритм перемножения многочленов требует порядка n2 действий для перемножения двух многочленов степени n. Придумать более эффективный (для больших n) алгоритм, которому достаточно порядка nlog 4/log 3 действий.

   Решение

Задачи

Страница: << 1 2 3 4 5 6 7 >> [Всего задач: 39]      



Задача 98848

 [Счет игры ]
Тема:   [ Площадь ]
Сложность: 3+

Задана квадратная доска размером N×N. Известно, что на ней играли в интеллектуальную игру, вследствие чего клеточки оказались окрашенными в белый, чёрный и зеленый цвета. Раскраска клеточек может быть разной (ведь это интеллектуальная игра!), но все клеточки самого верхнего ряда белые, а самого нижнего - чёрные.

Чтобы выявить победителя, необходимо подсчитать количество клеточек в белой и количество клеточек в черной области. Белая область - это как можно большая (по количеству клеточек) часть квадрата, которая ограничена сверху верхней стороной квадрата, а с других сторон - непрерывной границей, которая проходит только через белые клеточки и никакая клеточка не встречается больше одного раза. Белая граница представляет собой последовательность белых соседних клеточек (соседние клеточки имеют общую сторону). Концами этой границы должны быть левая верхняя и правая верхняя клеточки квадрата.

Определение чёрной области выглядит аналогично: она ограничена снизу нижней стороной квадрата, с других сторон - чёрной границей, которая проходит только через чёрные клеточки, а концы этой границы - левая нижняя и правая нижняя клеточки квадрата.

Задание

Напишите программу SCORE, которая по раскраске квадрата находит количество клеточек в белой и чёрной областях.

Входные данные

Первая строка входного файла SCORE.DAT содержит единственное целое число - размер квадрата (5≤N?250). Каждая из следующих N строк содержит по N символов "G", "W" или "B" (записанных без пробелов), которые обозначают зелёный, белый и чёрный цвет, соответственно.

Выходные данные

Первая строка выходного файла SCORE.SOL должна содержать количество клеточек в белой области, а вторая строка - количество клеточек в чёрной области.

Пример входных и выходных данных

SCORE.DAT

SCORE.SOL

7

WWWWWWW

WGWWBWG

WWWWGWW

BBGWWWB

GWBBWGB

BBBBGBB

BBBBBBB

22

15

Вид белой и чёрной областей для примера из условия представлен на рисунке.

Прислать комментарий     Решение

Задача 102900

 [Сопротивление ]
Тема:   [ Линейная алгебра ]
Сложность: 3+

Задана электрическая схема из некоторого количества узлов и N резисторов, их соединяющих. Напишите программу, вычисляющую сопротивление между двумя заданными узлами A и B этой схемы. Допускается частичное решение задачи для случая параллельно-последовательных схем.

Пояснения для тех, кто плохо учил в школе физику:
    1. Сила тока равна напряжению, поделенному на сопротивление: I = U / R.
    2. Сумма токов, втекающих в узел, равна сумме токов, вытекающих из него.
    3. Сумма падений напряжений I · R на отдельных участках произвольного замкнутого контура равна сумме всех ЭДС в этом контуре.

Как следствие, получаем следующие формулы:
    1. При последовательном соединении резисторов с сопротивлениями R1 и R2 общее сопротивление R вычисляется по формуле R = R1 + R2;
    2. При параллельном соединении резисторов с сопротивлениями R1 и R2 общее сопротивление R вычисляется по формуле 1 / R = 1 / R1 + 1 / R2.

Входные данные

В первой строке входного файла содержится целое число N – количество резисторов в схеме (1 ≤ N ≤ 50). Во второй строке записаны номера узлов A и B (узлы нумеруются начиная с 1). Каждая из следующих N строк содержит описание очередного резистора в виде тройки целых чисел из диапазона [0, 32767], записанных через пробел. Первые два числа задают номера двух различных узлов схемы, которые этот резистор соединяет, а третье – его сопротивление. Между двумя узлами схемы могут располагаться несколько резисторов.

Выходные данные

Выведите в выходной файл искомое сопротивление не менее чем с 6 верными значащими цифрами.

Пример входного файла

4
1 2
1 3 1
3 4 1
4 3 1
2 4 1

Пример выходного файла

2.50
Прислать комментарий     Решение


Задача 76245

Тема:   [ Многочлены ]
Сложность: 4

(В. Баур, Ф.Штрассен) Дана программа вычисления значения некоторого многочлена P(x1,..., xn), содержащая только команды присваивания. Их правые части — выражения, содержащие сложение, умножение, константы, переменные x1,..., xn и ранее встречавшиеся (в левой части) переменные. Доказать, что существует программа того же типа, вычисляющая все n производных $ \partial$P/$ \partial$x1,...,$ \partial$P/$ \partial$xn, причём общее число арифметических операций не более чем в C раз превосходит число арифметических операций в исходной программе. Константа C не зависит от n.
Прислать комментарий     Решение


Задача 76247

Тема:   [ Многочлены ]
Сложность: 4

Предложенный выше алгоритм перемножения многочленов требует порядка n2 действий для перемножения двух многочленов степени n. Придумать более эффективный (для больших n) алгоритм, которому достаточно порядка nlog 4/log 3 действий.
Прислать комментарий     Решение


Задача 98695

 [Сократи векторы]
Тема:   [ Векторы ]
Сложность: 4
Классы: 8,9,10,11

Максимальное время работы на одном тесте: 1 секунда

На плоскости задано N векторов - направленных отрезков, для каждого из которых известны координаты начала и конца (вектор, у которого начало и конец совпадают, называется нуль-вектором, можно считать, что нуль-вектор лежит на любой прямой, которая через него проходит). Введем следующие три операции над направленными отрезками на плоскости:

1) Направленные отрезки ненулевой длины, лежащие на пересекающихся прямых, можно заменить на их сумму, причем единственным образом. В этом случае отрезки переносятся вдоль своих прямых так, чтобы их начала совпадали с точкой пересечения прямых, и складываются по правилу сложения векторов (правилу параллелограмма, при этом началом результирующего вектора является точка пересечения прямых):

2) Направленные отрезки, лежащие на одной прямой, также можно заменить на их сумму. Для этого один из отрезков (любой) нужно перенести в начало второго из них и сложить по правилу сложения векторов на прямой:

Это правило применимо и в случае, когда один из векторов, или даже оба, являются нуль-векторами.

Заметим, что если складываемые векторы противоположно направлены и имеют одну и ту же длину, то результатом их сложения является нуль-вектор.

3) В любой точке плоскости можно породить два противоположно направленных отрезка равной (в том числе и нулевой) длины:

Будем говорить, что некоторая система векторов B эквивалентна системе A, если от системы A можно перейти к B с помощью конечной последовательности перечисленных выше операций.

Требуется получить любую систему векторов, эквивалентную заданной, состоящую из минимально возможного числа векторов.

Формат входных данных

В первой строке входного файла f.in записано число N - количество заданных векторов (1 < N ≤ 1000). В каждой из следующих N строк через пробел записаны четыре числа, обозначающие координаты начала и конца каждого из векторов соответственно. Все координаты - целые числа, по модулю не превосходящие 1000.

Формат выходных данных

В первой строке входного файла f.out следует записать число M - количество векторов в полученной системе (1 ≤ MN). В каждой из следующих M строк через пробел должны находиться четыре числа, обозначающие координаты начала и конца каждого из векторов соответственно. Все координаты - вещественные числа, записанные с 6 цифрами после точки.

Примеры

f.in

f.out

3

1 1 1 3

3 3 3 1

5 1 7 1

1

3.000000 3.000000 5.000000 3.000000

2

2 4 5 10

-2 -4 -5 -10

1

2.000000 4.000000 2.000000 4.000000

Прислать комментарий     Решение

Страница: << 1 2 3 4 5 6 7 >> [Всего задач: 39]      



© 2004-... МЦНМО (о копирайте)
Пишите нам

Проект осуществляется при поддержке Департамента образования г.Москвы и ФЦП "Кадры" .