Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Еще одна задача

276
09 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Да. Помойму последнее время пошла мода на алгоритмы :)

Вот вчера наткнулся на очень простенькую, но с изюменкой задачу. Хочу предложить ее уважаемым почитателям и пописателям форума.

Есть масив на 10000 елементов (целые числа в диапазоне от -10000 до +10000).

Нам зададут 100000 вопросов такого плана.
Найти суму чисел от i-того до j-ного елементов масива. Находить ответы надо очень быстро чтоб в 1с вложытся со всеми 100000 вопросами. Плюс памяти у нас токо 1 метр.

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

Задачу нашел на
http://acm.timus.ru/problem.aspx?space=1&num=1330&locale=ru
Спасибо за внимание. Надеюсь Вам будет интересно.
14K
11 ноября 2005 года
Alexey19@bk.ru
6 / / 10.11.2005
Цитата:
Originally posted by Rebbit
Да. Помойму последнее время пошла мода на алгоритмы :)

Вот вчера наткнулся на очень простенькую, но с изюменкой задачу. Хочу предложить ее уважаемым почитателям и пописателям форума.

Есть масив на 10000 елементов (целые числа в диапазоне от -10000 до +10000).

Нам зададут 100000 вопросов такого плана.
Найти суму чисел от i-того до j-ного елементов масива. Находить ответы надо очень быстро чтоб в 1с вложытся со всеми 100000 вопросами. Плюс памяти у нас токо 1 метр.

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

Задачу нашел на
http://acm.timus.ru/problem.aspx?space=1&num=1330&locale=ru
Спасибо за внимание. Надеюсь Вам будет интересно.


Задача и впрямь интересная, стоит посмотреть!!!

291
13 ноября 2005 года
gufy
703 / / 08.01.2003
:))))
если наличие сайта acm.timus.ru для тебя - признак моды на алгоритмы :))) то поизучай историю движения олимпиад АСМ и пойми, что, как программист, ты просто не имеешь права не знать об этих олимпиадах. для тренировки такие сайты как Тимус и есть)
а предложенная задача - очень простая задача с последнего школьного екатеринбургского АСМ-контеста. на этом сервере кстати еще больше 4 сотен задача уровня от очень простых до очень сложных. удачи!
276
15 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by gufy
:))))
если наличие сайта acm.timus.ru для тебя - признак моды на алгоритмы :))) то поизучай историю движения олимпиад АСМ и пойми, что, как программист, ты просто не имеешь права не знать об этих олимпиадах.


Я не имел в виду наличие сайта Тимус (он ведь уже давно существует). Я имел ввиду теми "Розминка для ума" и "Саперская задача".
Про айсиемки я слишал и даже немножко участвовал. Но истории их я не знаю.
А тему создал чтобы еще когото заинтересовать.
Потому то и задача простая. А еще потому что сложную я сам не смогу решить :(

292
15 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by gufy
предложенная задача - очень простая задача


А не мог бы Ты выложить свое решение?

Мне в голову пришла пока только одна мысль по решению этой задачи. Это сделать промежуточные массивы в которых буду суммы елементов 1и2 3и4 (массив 1), 1и4, 5и8 (массив 2) и т.д. Причем заполнять их можно по ходу получения вопросов, но над этим еще можно подумать. Вот. Теперь по запросу можна несколькими вічислениями дать ответ.

Думаю есть более быстрое и красивое решение. Поделишся своим?

276
15 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Matush
сделать промежуточные массивы в которых буду суммы елементов 1и2 3и4 (массив 1), 1и4, 5и8 (массив 2) и т.д.


Ладно давай абстрагироватсмя.
Пусть длинна вектора N, а количество вопросов M.
И пусть N есть степень двойки.
Тогда в твоей матрице будет log(n) строчек.
В первой строчке N елементов, во второй N/2, в последней 1 = сума всей матрицы.
Памяти для матрици надо N*2-1 чисел.
Для нахождения каждого елемента (кроме первой строчки) надо сумировать
два числа с предыдущей строчки. Итого N-1 операцый.

Для каждого вопроса надо искать суму по етой матрице.
Как Ты собираешся ето делать ?
Если можно то приводи код с подробными коментариями. Мне так легче понимать Твои мысли.

ЗЫ. Ксати я сначала тоже хотел сделать так как Ты предлогаеш, но есть лутший вариант.
Он может прити в голову когда будеш думать как искать суму по Твоей матрице.
Не знаю почему, но я додумался именно в етот момент.

252
21 ноября 2005 года
koderAlex
1.4K / / 07.09.2005
ужас какой алгоритм ))
создаём матрицу из n элементов - сумм исходной матрицы от 1ой до Iой позиции .(выч. сложность- n-1)
Каждый запрос тогда выполняется как разность двух элементов этой матрицы .Полная выч. сложнось = n-1+m = 10000-1+100000 . :D Вот и вся задачка .
276
21 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by koderAlex
ужас какой алгоритм ))
создаём матрицу из n элементов - сумм исходной матрицы от 1ой до Iой позиции .(выч. сложность- n-1)
Каждый запрос тогда выполняется как разность двух элементов этой матрицы .Полная выч. сложнось = n-1+m = 10000-1+100000 . :D Вот и вся задачка .


Совершенно идеально :)

276
21 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Вот посложнее. В книге в школе прочел. Но сам решить не смог. Посмотрел в ответах :D

Есть прямоугольник N x N (ето план города). На нем позначени дома (1 - есть дом 0 - нет дома)
Дома могут бить одиночными, прямыми или уголками.
Пример
 
Код:
0 0 0 0 1
1 1 1 0 1
0 0 0 0 1
0 1 0 1 1
0 0 0 0 0

Здесь три дома (по одному каждого вида). Никаких других домов нет (Ну типа буквой Т или Ш или П).
Пома не соприкасаются даже уголками.
Нужно пощитать количество домов-уголков, естественно с минимальной сложностю.
Также попробуйте написать програму без операторов if.
239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
goto можно юзать? или свич кейс? :)
292
21 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by koderAlex
ужас какой алгоритм ))
создаём матрицу из n элементов - сумм исходной матрицы от 1ой до Iой позиции .(выч. сложность- n-1)
Каждый запрос тогда выполняется как разность двух элементов этой матрицы .Полная выч. сложнось = n-1+m = 10000-1+100000 . :D Вот и вся задачка .



а я не допер... :(

292
21 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Rebbit
Также попробуйте написать програму без операторов if.


Тут идейка сразу пришла.
буду считать что имеею этот массив с окаймлющими нулями (что бы не проверять выход за массив)

Алгоритм очеть прост: делаем переменню N, проходим каждую ячейку и записываем такое N=m[x-][y]*m[x][y-1]+m[x][y-1]*m[x+1][y] + m[x+1][y+1]*m[x][y+1]+m[x][y+1]*m[x-1][y].

Понятным языком: для каждой ячейки проверяем сумму произведений четерех сторон. Только для углового домика эта сумма будет 1.

276
21 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Matush
Тут идейка сразу пришла.
буду считать что имеею этот массив с окаймлющими нулями (что бы не проверять выход за массив)

Алгоритм очеть прост: делаем переменню N, проходим каждую ячейку и записываем такое N=m[x-][y]*m[x][y-1]+m[x][y-1]*m[x+1][y] + m[x+1][y+1]*m[x][y+1]+m[x][y+1]*m[x-1][y].

Понятным языком: для каждой ячейки проверяем сумму произведений четерех сторон. Только для углового домика эта сумма будет 1.


Вообщето ДА. Так роботать будет. И ифов не надо. А поробуй придумать более простую формулу. Она есть.

Цитата:
Originally posted by Dolonet
goto можно юзать? или свич кейс?


goto юзай на здорове, а свич кейс нет. И не делей пожалуйста ифов ассемблерными вставками :)

239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Rebbit
goto юзай на здорове, а свич кейс нет. И не делей пожалуйста ифов ассемблерными вставками :)

Вот времена пошли! Теперь ассемблер за язык программирования не считают. А ведь он дедушка тех языков, на которых сейчас кодите вы! ) ай-ай-ай %)

276
21 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Dolonet
Вот времена пошли! Теперь ассемблер за язык программирования не считают. А ведь он дедушка тех языков, на которых сейчас кодите вы! ) ай-ай-ай %)


:D Да нет. Кто ассемблер обидет, тому чтоб век без горячих клавиш роботать. Просто чтоб програма без явных ветвлений была. Циклы впринцыпе тоже ветвления, но их можно. :)

239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Rebbit
:D Да нет. Кто ассемблер обидет, тому чтоб век без горячих клавиш роботать. Просто чтоб програма без явных ветвлений была. Циклы впринцыпе тоже ветвления, но их можно. :)

т.е. как я понял без подпрограмм вообще? значит стек не юзать? ) оки, а goto можно сделать и if, и switch, и цикл и даже рекурсию фиксированной глубины, так что лучше сказать "нет" моему goto ;)

276
21 ноября 2005 года
Rebbit
1.1K / / 01.08.2005
Цитата:
Originally posted by Dolonet
т.е. как я понял без подпрограмм вообще? значит стек не юзать? ) оки, а goto можно сделать и if, и switch, и цикл и даже рекурсию фиксированной глубины, так что лучше сказать "нет" моему goto ;)


А как Ты через ИдтиНа хочеш иф сделать ?
Масив адресов в сегменте кода и
Goto labels[i+int(условие)] ???

ЗЫ. Впринцыпе Матюш уже ту задачу решил. Может кто просто формулу попроще приведет.
ЗЫ ЗЫ. Если у кого есть интересные задачи то предлагаю вешать их в ету тему. Интересно получится может. Только давайте вешать по одной. Чтоб хаоса не создавать.

239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Rebbit
А как Ты через ИдтиНа хочеш иф сделать ?

...Только давайте вешать по одной. Чтоб хаоса не создавать.

Т.е. как это "как"? а чем еще, позволю поинтересоваться? конечно, проверкой остатка от деления через goto.

Ну давайте) У меня есть задачка, но она, боюсь, слишком сложная.. ;)

292
21 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Dolonet
Ну давайте) У меня есть задачка, но она, боюсь, слишком сложная.. ;)


если эта задачка имеет елегантное решение, то пость

239
21 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Matush
если эта задачка имеет елегантное решение, то пость

а ничего что задание на английском?

252
22 ноября 2005 года
koderAlex
1.4K / / 07.09.2005
Цитата:
Originally posted by Dolonet
а ничего что задание на английском?


Тогда переведи ,плиз . У мя с англицким туго .В школе немецкий учил , а в универе по англицкому преподку еле на тройку натянул .:(

292
22 ноября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Dolonet
а ничего что задание на английском?


Думаю что ничего. Каждый переведет его по своему и будет у нас несколько задач :)

239
23 ноября 2005 года
Dolonet
1.7K / / 20.05.2000
Долго думал, потратил на это уйму времени, и решил, что переводить мне лень. Могу, если совсем непонятно, устроить краткое изложение мысли. Так, на секундочку, речь идет о домино :)

Текст:
Код:
The Domino Effect

A standard set of Double Six dominoes contains 28 pieces (called bones)
each displaying two numbers from 0 (blank) to 6 using dice-like pips. The 28
bones, which are unique, consist of the following combinations of pips:

Bone #     Pips    Bone #     Pips    Bone #     Pips    Bone #     Pips

1        0 | 0      8       1 | 1    15        2 | 3     22       3 | 6
2        0 | 1      9       1 | 2    16        2 | 4     23       4 | 4
3        0 | 2      10      1 | 3    17        2 | 5     24       4 | 5
4        0 | 3      11      1 | 4    18        2 | 6     25       4 | 6
5        0 | 4      12      1 | 5    19        3 | 3     26       5 | 5
6        0 | 5      13      1 | 6    20        3 | 4     27       5 | 6
7        0 | 6      14      2 | 2    21        3 | 5     28       6 | 6

All the Double Six dominoes in a set can he laid out to display a 7 x 8
grid of pips.  Each layout corresponds at least one ÒmapÓ of the dominoes. A
map consists of an identical 7 x 8 grid with the appropriate bone numbers
substituted for the pip numbers appearing on that bone. An example of a 7 x 8
grid display of pips and a corresponding map of bone numbers is shown below.

    7 x 8 grid of pips      map of bone numbers

  6  6  2  6  5  2  4  1    28 28 14  7 17 17 11 11
  1  3  2  0  1  0  3  4    10 10 14  7  2  2 21 23
  1  3  2  4  6  6  5  4     8  4 16 25 25 13 21 23
  1  0  4  3  2  1  1  2     8  4 16 15 15 13  9  9
  5  1  3  6  0  4  5  5    12 12 22 22  5  5 26 26
  5  5  4  0  2  6  0  3    27 24 24  3  3 18  1 19
  6  0  5  3  4  2  0  3    27  6  6 20 20 18  1 19

Write a program that will analyze the pattern of pips in any 7 x 8 layout
of a standard set of dominoes and produce a map showing the position of all
dominoes in the set. If more than one arrangement of dominoes yield the same
pattern, your program should generate a map of each possible layout.


Input and Output

The input file will contain several of problem sets.  Each set consists of
seven lines of eight integers from 0 through 6, representing an observed
pattern of pips. Each set is corresponds to a legitimate configuration of
bones (there will be at least one map possible for each problem set). There is
no intervening data separating the problem sets.

Correct output consists of a problem set label (beginning with Set #1)
followed by an echo printing of the problem set itself. This is followed by a
map label for the set and the map(s) which correspond to the problem set.
(Multiple maps can be output in any order.) After all maps for a problem set
have been printed, a summary line stating the number of possible maps appears.
At least three lines are skipped between the output from different problem
sets while at least one line separates the labels, echo printing, and maps
within the same problem set. A sample input file of two problem sets along
with the correct output are shown on the reverse of this page.


Sample Input       Sample Output

5 4 3 6 5 3 4 6    Layout #1:
0 6 0 1 2 3 1 1
3 2 6 5 0 4 2 0       5   4   3   6   5   3   4   6
5 3 6 2 3 2 0 6       0   6   0   1   2   3   1   1
4 0 4 1 0 0 4 1       3   2   6   5   0   4   2   0
5 2 2 4 4 1 6 5       5   3   6   2   3   2   0   6
5 5 3 6 1 2 3 1       4   0   4   1   0   0   4   1
4 2 5 2 6 3 5 4       5   2   2   4   4   1   6   5
5 0 4 3 1 4 1 1       5   5   3   6   1   2   3   1
1 2 3 0 2 2 2 2
1 4 0 1 3 5 6 5    Maps resulting from layout #1 are:
4 0 6 0 3 6 6 5
4 0 1 6 4 0 3 0       6  20  20  27  27  19  25  25
6 5 3 6 2 1 5 3       6  18   2   2   3  19   8   8
                      21  18  28  17   3  16  16   7
                      21   4  28  17  15  15   5   7
                      24   4  11  11   1   1   5  12
                      24  14  14  23  23  13  13  12
                      26  26  22  22   9   9  10  10

                    There are 1 solution(s) for layout #1.


                    Layout #2:
 
                       4   2   5   2   6   3   5   4
                       5   0   4   3   1   4   1   1
                       1   2   3   0   2   2   2   2
                       1   4   0   1   3   5   6   5
                       4   0   6   0   3   6   6   5
                       4   0   1   6   4   0   3   0
                       6   5   3   6   2   1   5   3

                    Maps resulting from layout #2 are:

                      16  16  24  18  18  20  12  11
                       6   6  24  10  10  20  12  11
                       8  15  15   3   3  17  14  14
                       8   5   5   2  19  17  28  26
                      23   1  13   2  19   7  28  26
                      23   1  13  25  25   7   4   4
                      27  27  22  22   9   9  21  21

                      16  16  24  18  18  20  12  11
                       6   6  24  10  10  20  12  11
                       8  15  15   3   3  17  14  14
                       8   5   5   2  19  17  28  26
                      23   1  13   2  19   7  28  26
                      23   1  13  25  25   7  21   4
                      27  27  22  22   9   9  21   4

                    There are 2 solution(s) for layout #2.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог