Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

Наибольшая возрастающая подпоследовательность за O(NlogN) - C++

30.05.2014, 10:52. Просмотров 1022. Ответов 4
Метки нет (Все метки)

Здравствуйте! Вот тут написал код НВП за О(NlogN).Но на тестирующей системе он выдает на тесты некоторые неправильные ответы.Тестов я получить не могу, а все мои тесты он проходит.

Вот код:
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
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <utility>
#include <stack>
 
using namespace std;
typedef long long ll;
 
const ll maxn = 10009;
vector<ll> a(maxn, 0), t(maxn, maxn), p(maxn, 0), pr(maxn, 0);
ll n;
stack<ll> q;
 
 
void test()
{
    cin >> n;
    for (ll i = 1; i <= n; ++i)
        cin >> a[i];
    t[0] = -maxn;
    for (ll i = 1; i <= n; ++i)
    {
        ll j = upper_bound(t.begin(), t.begin() + n + 1, a[i]) - t.begin();
        if (a[i]<t[j] && a[i] > t[j - 1])
        {
            t[j] = a[i];
            p[j] = i;
            pr[i] = p[j - 1];
        }
    }
    ll ind = lower_bound(t.begin(), t.begin() + n + 1, maxn) - t.begin()-1;
    cout<<ind<<endl;
    ind = p[ind];
    while (ind)
    {
        q.push(ind);
        ind = pr[ind];
    }
    while (!q.empty())
    {
        cout << a[q.top()] << ' '; q.pop();
    }
}
 
int main()
{
    //ios_base::sync_with_stdio(0);
    test();
    return 0;
}
В чём ошибка тут быть может?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2014, 10:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наибольшая возрастающая подпоследовательность за O(NlogN) (C++):

Строго возрастающая макс. подпоследовательность - C++
Долго ломал голову над задачей. Наконец-то нашел код (он правда, на паскале). Переделал, все хорошо. Но вот не задача: никак не могу...

Максимальная возрастающая подпоследовательность алгоритмами STL - C++
Доброго времени суток, уважаемые форумчане. Есть задача, реализовать алгоритм вычисления максимальной возрастающей...

Динамическое программирование: самая длинная строго возрастающая подпоследовательность - C++
Здравствуйте!!! У меня есть такое задание: дана последовательность целых чисел. Необходимо найти её самую длинную строго возрастающую...

Наибольшая общая подпоследовательность с восстановлением ответа - C++
Даны две последовательности, требуется найти и вывести их наибольшую общую подпоследовательность. Формат входных данных В первой...

возрастающая последовательность - C++
необходимо удалить из заданного массива 4 элемента так, чтобы оставшиеся образовали возрастающую последовательность????

Возрастающая последовательность - C++
Народ помогите написать прогу на Си. Даны вещественные числа. определить образуют ли они возрастающую последовательность. если да - то...

4
grikukan
61 / 61 / 21
Регистрация: 23.09.2012
Сообщений: 212
30.05.2014, 11:05 #2
А где можно сдать для проверки?
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
30.05.2014, 11:10  [ТС] #3
grikukan, informatics.mccme.ru
0
grikukan
61 / 61 / 21
Регистрация: 23.09.2012
Сообщений: 212
30.05.2014, 11:14 #4
Там в условии ошибка.
Поставьте maxn=100007 и будет Вам счастье
1
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
30.05.2014, 14:38  [ТС] #5
grikukan, не заходит.Пишет - неправильный формат вывода

Добавлено через 19 минут
Всё, проблема решена
0
30.05.2014, 14:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2014, 14:38
Привет! Вот еще темы с ответами:

Возрастающая последовательность - C++
Задание: Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность....

Возрастающая последовательность - C++
Помогите написать программму,которая проверит,представляют ли элементы введённого с клавиатуры массива возрастающую последовательность. ...

Возрастающая последовательность массива - C++
Задание: Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность....

массив и возрастающая последовательность - C++
#include &lt;iostream&gt; using namespace std; void main() { int t; int n; for (int i=0; i&lt;5; i++) { cin &gt;&gt; t;


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru