Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2014, 10:23   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В честь чего?
auto подставит нечто ввиде
for (set<int>::const_iterator p = myset.begin(); p != myset.end(); ++p) cout << t;

А ++p имеет сложность O(log2(n))

У нас set - дерево, отсортированное по некому критерию. Поэтому, чтобы перейти от некого элемента дерева к следующему, мы должны будет сделать порядка O(log(2)N) операций
Poma][a вне форума Ответить с цитированием
Старый 19.07.2014, 11:23   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
А ++p имеет сложность O(log2(n))
откуда инфа? XDD
rrrFer вне форума Ответить с цитированием
Старый 19.07.2014, 11:40   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
откуда инфа? XDD
Из здравого смысла..
Множества обычно реализуются на красно-черных деревьях. А в деревьях переход к след. элементу занимает O(log2(n)) (прув найти не смог)
Poma][a вне форума Ответить с цитированием
Старый 19.07.2014, 13:23   #14
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Так тут же вроде сортировка ре
Somebody вне форума Ответить с цитированием
Старый 19.07.2014, 13:24   #15
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Тут же сортировка рейсов по времени отправления + один проход по ним, разве нет?
Somebody вне форума Ответить с цитированием
Старый 19.07.2014, 13:42   #16
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Тут же сортировка рейсов по времени отправления
Хорошо.. Отсортировали..
Цитата:
один проход по ним
А что делает один проход?
Есть 3 деревни
Едем из 1 в 3
Автобусы
1 0 2 5
1 1 2 3
2 3 3 5
1 1 1 10

Сортируем..
1 0 2 5
1 1 2 3
1 1 1 10
2 3 3 5

Что дальше?
Poma][a вне форума Ответить с цитированием
Старый 19.07.2014, 15:10   #17
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Мин. времена по деревням: 0, ∞, ∞
1 0 2 5
Мин. времена по деревням: 0, 5, ∞
1 1 2 3
Мин. времена по деревням: 0, 3, ∞
1 1 1 10
Мин. времена по деревням: 0, 3, ∞
2 3 3 5
Мин. времена по деревням: 0, 3, 5
Если время отправления текущего рейса не меньше минимального времени для деревни отправлдения рейса, то новое минимальное время для деревни прибытия рейса - минимум из старого времени для деревни прибытия и времени прибытия текущего рейса.
Somebody вне форума Ответить с цитированием
Старый 19.07.2014, 15:10   #18
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Мин. времена по деревням: 0, ∞, ∞
1 0 2 5
Мин. времена по деревням: 0, 5, ∞
1 1 2 3
Мин. времена по деревням: 0, 3, ∞
1 1 1 10
Мин. времена по деревням: 0, 3, ∞
2 3 3 5
Мин. времена по деревням: 0, 3, 5
Если время отправления текущего рейса не меньше минимального времени для деревни отправления рейса, то новое минимальное время для деревни прибытия рейса - минимум из старого времени для деревни прибытия и времени прибытия текущего рейса.
Somebody вне форума Ответить с цитированием
Старый 19.07.2014, 16:20   #19
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Вот написал bfs..
WA 2
Код:
#include <iostream>
#include <vector>
#include <list>
#include <queue>

#define INF 10000000

using namespace std;
struct line
{
    int send_time, to, arr_time;
};

struct vill
{
    int index, time;
};

int main()
{
    int n, from, to, m;
    cin >> n >> from >> to >> m;
    vector<list<line> > bus(n+1);
    for (int i = 0; i < m; i++)
    {
        line t; int fr;
        cin >> fr >> t.send_time >> t.to >> t.arr_time;
        bus[fr].push_back(t);
    }

    vector<int> p(n+1, INF);
    vill t;
    t.index = from; t.time = 0;
    queue<vill> q;
    q.push(t);

    while (!q.empty())
    {
        vill t = q.front(); q.pop();
        for (list<line>::iterator b = bus[t.index].begin(); b != bus[t.index].end(); ++b)
        {
            if (b->send_time < t.time) continue;

			if (p[b->to] > b->arr_time+b->send_time-t.time)
            {
				p[b->to] = b->arr_time+b->send_time-t.time;
				vill temp;
                temp.index = b->to; temp.time = b->arr_time;
				q.push(temp);
            }
        }
    }

    if (p[to] != INF) cout << p[to]; 
    else cout << -1;
    return 0;
}

Последний раз редактировалось Poma][a; 20.07.2014 в 01:52.
Poma][a вне форума Ответить с цитированием
Старый 20.07.2014, 02:07   #20
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
#include <iostream>
#include <vector>
#include <algorithm>

#define INF 10000000

using namespace std;

struct line
{
    int from, send_time, to, arr_time;
};

bool cmp(const line a, const line b)
{
    return a.send_time < b.send_time;
}

int main()
{
    int n, from, to, m;
    cin >> n >> from >> to >> m;

    vector<line> b(m);
    vector<int> p(n+1, INF);
    p[from] = 0;

    for (int i = 0; i < m; i++)
        cin >> b[i].from >> b[i].send_time >> b[i].to >> b[i].arr_time;

    sort(b.begin(), b.end(), cmp);

    for (int i = 0; i < m; i++)
        if (b[i].send_time <= p[b[i].from]) p[b[i].to] = min(p[b[i].to], b[i].arr_time);


	if (p[to] != INF) cout << p[to];
	else cout << -1;
}
Теперь на 4-ом тесте
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Олимпиадная задача "Золото племени АББА" на Pascal (№7 с acmp.ru) Ghost3 Помощь студентам 19 17.01.2013 21:04
Задача "Лампочки" на Pascal (№337 с acmp.ru) Ghost3 Помощь студентам 18 01.11.2012 14:10
Олимпиадная задача "Встреча" (на поиск оптимального маршрута, графы) woofer46 Фриланс 2 15.01.2012 15:26
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04