Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
1

Для каждых k подряд идущих чисел найти минимум

13.11.2014, 20:06. Показов 5206. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано n чисел. Для каждых k подряд идущих чисел найти минимальное среди них.
Вся соль задачи в том, что 1 ≤ n ≤ 150000, 1 ≤ k ≤ 10000, k ≤ n
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2014, 20:06
Ответы с готовыми решениями:

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

Дан список целых чисел. Найти наибольшее количество чисел идущих подряд
https://www.cyberforum.ru/csharp-beginners/thread2045600.html#post10786618 (defun max23 (w ...

Дан массив целых чисел. Найти наибольшее количество чисел идущих подряд
using System; using System.Collections.Generic; using System.ComponentModel; using...

Найти максимальную сумму подряд идущих чисел
Необходимо найти максимальную сумму подряд идущих чисел Числа могут быть как положительными, так и...

6
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
13.11.2014, 20:52 2
Куча, например, или дерево отрезков или (как мне кажется проще всего, если получится) дерево Фенвика.

Добавлено через 18 минут
У меня такая штука получилась. Кажется, работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <cstdio>
#include <algorithm>
#include <list>
 
using namespace std;
 
const int INFINITY = 1 << 30;
const int MAX_NUMBERS = 150000;
int numbers[MAX_NUMBERS + 1], arr[MAX_NUMBERS + 1];
int n, k;
 
int Next(int x)
{
    return x | (x+1);
}
 
int Prev(int x)
{
    return (x & (x+1)) - 1;
}
 
 
void Modify(int x, int y)
{
    while(x <= n)
    {
        arr[x] = min(arr[x], y);
        x = Next(x);
    }
}
 
 
int FindMin(int r)
{
    int ans = INFINITY;
    while(r > 0)
    {
        ans = min(ans, arr[r]);
        r = Prev(r);
    }
    return ans;
}
 
 
int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; ++i)
    {
        scanf("%d", &numbers[i]);
        arr[i] = INFINITY;
    }
    list<int> answer;
    for(int i = n - k + 1; i <= n; ++i)
        Modify(i, numbers[i]);
    for(int i = n - k + 1; i > 0; --i)
    {
        answer.push_front(FindMin(i + k - 1));
        if(i > 1)
            Modify(i - 1, numbers[i - 1]);
    }
 
    for(auto& it: answer)
        printf("%d ", it);
 
    return 0;
}
1
47 / 32 / 9
Регистрация: 05.01.2013
Сообщений: 307
13.11.2014, 23:32  [ТС] 3
Dani, а можно какую-то ссылочку, где бы с этим можно было ознакомиться?

Не по теме:

а то в педивикии не оч...

0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
14.11.2014, 16:03 4
http://e-maxx.ru/algo/fenwick_tree
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
14.11.2014, 16:56 5
Dani, чет кажись проще всего с сетом или приорити кью. если не знать ДО и фенвика.
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
14.11.2014, 16:59 6
Приорити кью врядли, т.к. при сдвиге отрезка нужно как-то вычислить число, которого теперь в отрезке не будет и удалить его. А вот сетом - можно.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
14.11.2014, 17:03 7
Dani, а да тупанул.
0
14.11.2014, 17:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2014, 17:03
Помогаю со студенческими работами здесь

Найти максимальную сумму чисел, идущих подряд
Прошу помощи ибо сам что то не могу догнать... Вот задание: Дан массив из 100 элементов, найти...

Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе, идущих подряд
Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе,...

Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе, идущих подряд
Дано целое число N и набор из N целых чисел. Найти максимальное количество нечетных чисел в наборе,...

Найти наибольшее число одинаковых идущих подряд чисел
Дан одномерный массив из 10 целых чисел. Подсчитайте наибольшее число одинаковых идущих подряд в...

Найти максимальное количество одинаковых чисел, идущих подряд
Дан массив A(n). Найти максимальное количество одинаковых чисел, идущих подряд.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru