Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Вниз

Пятничные задачи. Вася Пупкин сегодня отдыхает.   Найти похожие ветки 

 
Igorek ©   (2004-12-11 01:24) [40]

MBo ©   (10.12.04 10:06)

> с затратами памяти меньшими, чем O(N).

Меньше может быть только О(1) :-)

>TUser ©   (10.12.04 10:25) [1][Ответить]
> 2. вопрос - O(N) памяти надо на хранение самого
> массива. Как может быть меньше?

Всегда имеется ввиду доп. память кроме той, которая нужна для условия.

Короче можно. То же, что и 123456789 -> 912345678. Есть нюансы, но они не принципиальные.


 
Igorek ©   (2004-12-11 01:26) [41]

GuAV ©   (10.12.04 21:07) [39]

> Что есть O(N) ?

Величина прямо пропорциональна N.


 
GuAV ©   (2004-12-11 02:14) [42]


> 4. Берем три цилиндра единичного радиуса, оси которых
>проходят соответственно через
> попарно перпендикулярные координатные оси 0x, 0y и 0z.
>А длина пусть будет бесконечная.
> Требуется определить объем фигуры, полученной при
> пересечении этих цилиндров.

Шара об"ёма не имеет :-)


 
Igorek ©   (2004-12-11 12:34) [43]


> Меньше может быть только О(1) :-)

Сорри. Ошибся. Может. Напр. О(log(N)).
Имел ввиду, что задачу можно решить при константной памяти.


 
Igorek ©   (2004-12-11 14:26) [44]

2.
procedure ReOrder(var a: array of Integer);

 procedure Swap(var a, b: Integer);
 begin
   a := a xor b;
   b := a xor b;
   a := a xor b;
 end;

 function NewIndex(i, N: Integer): Integer;
 begin
   if (N mod 2) = 0 then //приводим к подзадаче для нечетного колл.
     Result := NewIndex(i - 1, N - 1) + 1
   else //четное колл.
     if (i mod 2) = 0 then //четные справа
       Result := (N - 1) - (i div 2)
     else //нечетные слева
       Result := i div 2;
 end;
 
var
 Start, I, NewI, L: Integer;
begin
 L := Length(a);
 Start := 1 - (L mod 2);
 I := Start;
 while True do
 begin
   NewI := NewIndex(I, L);
   if NewI = Start then
     break;
   Swap(a[Start], a[NewI]);
   I := NewI;
 end;
end;

Не оптипизирован для ясности понимания. Время О(N) не очевидно, но так оно есть. Для очевидности цикл while True можно было тупо повторить колл. раз близкое N.


 
Igorek ©   (2004-12-11 14:56) [45]

Igorek ©   (11.12.04 14:26) [44]
Лажа, сорри. Работает не всегда. А я проверял только для 9 и 10 чисел. Там возникает несколько независимых цепочек.


 
GuAV ©   (2004-12-11 15:09) [46]

GuAV ©   (10.12.04 21:07) [39]
(1/2)/cos(Fi/2)  Fi от 0 до 60
sin(Fi/2)   Fi от 60 до 180


(1/2)/cos(Fi/2)  Fi от 0 до 90
sin(Fi/2)   Fi от 90 до 180


 
SergP ©   (2004-12-11 19:23) [47]

1. Измеряем расстояние между пнями от дуба и осины. Например L
Берем веревку длиной L*sqrt(2) , отмечаем на ней середину.  Привязываем один конец к дубу, другой к осине, берем веревку за середину и отходим так чтобы обе части веревки были натянуты, а дуб чтобы был левее осины.
Копаем.


 
SergP ©   (2004-12-11 19:31) [48]

если проще, то:
1. Идем от осины к дубу. Считаем шаги (Допустим получилось N шагов). далее идем от дуба к осине. Проходим N/2 шагов, поворачиваем направо и проходим еще N/2 шагов. Копаем.


 
MBo ©   (2004-12-14 09:07) [49]

>GuAV ©   (11.12.04 15:09) [46]
>VICTOR_   (10.12.04 13:15) [29]
>(1/2)/cos(Fi/2)  Fi от 0 до 90
Да.

>SergP ©   (11.12.04 19:31) [48]
Верно.
один из путей решения - ставим дуб в начало координат, осину в точку (N,0), березу  - в произвольные x,y.
посчитав векторы, перпендикулярные к ним и середину нужного отрезка, увидим, что x,y сократятся, останутся только координаты (N/2, N/2)



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.035 c
1-1102622615
serko
2004-12-09 23:03
2005.01.02
Черчение


8-1096649813
Александр Орлов
2004-10-01 20:56
2005.01.02
Этот TMediaPlayer не в моем духе


1-1103531158
nickola
2004-12-20 11:25
2005.01.02
как узнать "ширину" строки


1-1103317548
Raider
2004-12-18 00:05
2005.01.02
Как избавиться от BEEP a ???


14-1102509436
Alexander Panov
2004-12-08 15:37
2005.01.02
Победа Януковича. Противостояние. (продолжение. Часть 3)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский