Хм... Ну на эту задачу я попробовал написать заливку снаружи,то есть выбираю в какой цвет покрашу и начинаю это делать снаружи,так как слои окрашиваться будут именно так,и выбираю ответ минимальный..
Прошла с первого раза,сложность O(N * M).
51 2010-02-07 02:19:42
Re: Поиск радиуса графа. (23 ответов, оставленных в Problems)
52 2010-02-06 18:22:40
Re: Поиск радиуса графа. (23 ответов, оставленных в Problems)
А что сделать то надо? Откуда в теме про радиус,вообще заливка появилась? Не понимаю.
54 2010-02-02 17:25:54
Re: MEDIAN (9 ответов, оставленных в Problems)
Вот теперь спасибо,эту задачу я уже решал..
Решение такое,найдём где наша медиана в массиве (она там одна,все числа различны).
Теперь пробежим от неё вправо попутно прибавляя +1 к разности кол-ва больших её чисел - кол-во меньших её чисел.
Теперь начнём бежать так же влево,и попутно зная разность кол-ва больших и меньших её чисел,можем узнать сколько краёв справа медианы даст нам такой отрезок что в нём кол-во больших и кол-во меньших чисел равны!
Получаем суть решения в том,что бы каждый момент знать при фиксированном левом крае,кол-во краёв справа медианы,которые в сумме дают равное кол-во больших и меньших чисел медианы,тем самым это и есть свойство медианы.
Сложность алгоритма и память O(N).
Реализация на Паскале(PASCAL):
var a:array[0..100010]of longint;
r:array[-100010..100010]of longint;
id,k,k2,i,n,md:longint;
ans:int64;
begin
read(n,md);
for i:=1 to n do begin
read(a[i]);
if(a[i]=md)then id:=i;
end;
k:=0; k2:=0;
fillchar(r,sizeof(r),0);
for i:=id to n do begin
if(a[i]>md)then inc(k) else if(a[i]<md)then inc(k2);
inc(r[k-k2]);
end;
ans:=0; k:=0; k2:=0;
for i:=id downto 1 do begin
if(a[i]>md)then inc(k) else if(a[i]<md)then inc(k2);
inc(ans,r[k2-k]);
end;
writeln(ans);
end.
55 2010-02-02 16:43:26
Re: MEDIAN (9 ответов, оставленных в Problems)
переберем все длины подпоследовательностей K и для каждой посчитаем ответ деревом отрезков как для k-й порядковой (но только такой, чтобы в ней содержался элемент множ-во А, равный М).
Не самый лучший вариант!
А можно всё таки ссылку на условие? Или автор темы взял из головы задачу??
56 2010-02-02 08:59:13
Re: Структура данных (3 ответов, оставленных в Algo)
Нет Геморно писать всё это ...
В интернете должно быть ):
58 2010-02-01 20:46:32
Re: Структура данных (3 ответов, оставленных в Algo)
То что ты описал волне сойдёт для Декартова дерева,если конечно ты подразумевал под add(x), delete(x) удаление числа из списка чисел.
Декартово дерево
59 2010-01-30 21:21:22
Re: Путь по всех вершинах (1 ответов, оставленных в Problems)
Как я знаю это NP-полная задача,то что он ориентированный,нам как бэ ничего не даёт
61 2010-01-28 23:41:15
Re: Сортировка по углам (5 ответов, оставленных в Problems)
Ну ArcTan функция возрастающая,поэтому если сместить точки в плоскости (1,4) - что легко делается,то можно сортировать по x/y,а соотвественно при сравнении углов,можно избавиться от деления,так что тоже получит всё в целых числах.
62 2010-01-28 16:39:56
Re: Сортировка по углам (5 ответов, оставленных в Problems)
Сортировка по углам нужна,и нужна довольно часто,например задача о "построении выпуклой оболочки",задача о "поиске всех прямоугольников на наборе точек",их можно решать и по другому но очень удобно сортировать данные по углу.
Как написать сортировку по углу:
# Найдём самую левую-нижнюю точку,и сместим её в (0,0) и остальные координаты (на нужную величину). (Не обязательно делать).
# Теперь допустим есть точка (x,y) тогда угол для неё будет ArcTanges(Y / X).
63 2010-01-27 17:11:16
Re: USACO (6 ответов, оставленных в Offtopic)
Ааа Да забыл сказать,чувствительно к регистру (:
64 2010-01-27 11:32:01
Re: Длинная арифметика.Умножение длинного на короткое (5 ответов, оставленных в Algo)
type Tlong=record n:longint;
a:array[0..100]of longint;
end;
procedure multLong(var c:Tlong; a,b:Tlong);
var i,j:longint;
begin
fillchar(c,sizeof(c),0);
c.n:=a.n+b.n+2;
for i:=1 to a.n do
for j:=1 to b.n do
inc(c.a[i+j-1],a.a[i]*b.a[j]);
for i:=1 to c.n-1 do
if(c.a[i]>9)then begin
inc(c.a[i+1],c.a[i] div 10);
c.a[i]:=c.a[i] mod 10;
end;
while(c.n>1)and(c.a[c.n]=0)do dec(c.n);
end;
Вот реализация на Pascal
Мне лень на Си++ писать!
65 2010-01-27 11:29:58
Re: USACO (6 ответов, оставленных в Offtopic)
Ты прав Я думал человек догадался
66 2010-01-27 00:20:43
Re: USACO (6 ответов, оставленных в Offtopic)
ace.delos.com
Если тебе нужно узнать тесты или решения (разборы воощем) на задачи (всех дивизионов)
например Январь 2009,то пишешь
ace.delos.com/JAN09
67 2010-01-26 15:31:52
Re: Максимизировать количество пар, удовлетворяющих заданному ограничению (1 ответов, оставленных в Algo)
Конечно парасочетания.
Делаешь две доли (доля-x, доля-y).
Делаешь ребро между двумя вершинами,если они подходят под описанное ограничение(|xi - yj| <= eps).
Теперь тебе нужно найти в данном графе максимальное парасочетание.
На этом сайте описано много алгоритмов для нахождения.
Например будет удобно использовать
Метод Куна
68 2010-01-22 17:35:47
Re: Помогите с Крускалом (9 ответов, оставленных в Algo)
69 2010-01-21 12:58:01
Re: Помогите с Крускалом (9 ответов, оставленных в Algo)
http://msdn.microsoft.com/ru-ru/magazine/cc163451.aspx
http://www.cyberguru.ru/programming/cpp … age18.html
Почитай вот это думаю ты поймёшь,а так pair связывает каких-то две структуры,или сами же pair.
В твоём случае он связывает ценность ребра и направление ребра,поэтому
pair< int, pair< int, int > > - первый int - цена,второй int - откуда,третий int - куда.
Таким же образом pair может связать и большее кол-во структур разного предназначения..
ИМХО! Сам я в си++ не шарю
70 2010-01-15 00:26:45
Re: вопрос расширенный алгоритм евклида (6 ответов, оставленных в Algo)
Эх,такое бы в Паскаль
71 2010-01-14 15:50:27
Re: вопрос расширенный алгоритм евклида (6 ответов, оставленных в Algo)
Нерекурсивный метод почти точно такой же,во первых его можно найти в интернете или во многих книжках там он делается с помощью обычного цикла,во вторых можно и любой рекурсивный самому перевести в нерекурсивный,просто что не так удобно..
72 2009-12-24 00:12:21
Re: Поиск самых отдалённых вершин в дереве (30 ответов, оставленных в Problems)
А ну да Динамика рулит!
73 2009-12-23 23:05:19
Re: Поиск самых отдалённых вершин в дереве (30 ответов, оставленных в Problems)
Да! Но я просто выразил мнение как ещё можно решить её за линейно
А какое хоть изменение :%?
74 2009-12-23 20:34:40
Re: Поиск самых отдалённых вершин в дереве (30 ответов, оставленных в Problems)
Так а что тут непонятного?
Когда рёбра просто дробные то это ниначто не влияет.
А вот когда рёбра и отрицательные могут быть,то происходит та же проблема что и при пуске дейкстры по графу с отрицательными рёбрами^_^
КАДР а тут динамика не покатит? Вроде динамике то пофигу.