Форум программистов, компьютерный форум CyberForum.ru

Сравнение скорости - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разделения программы сложения массивов на потоки http://www.cyberforum.ru/cpp-beginners/thread434664.html
Имеется программа сложения 2х массивов требуется разбить ее на потоки и замереть скорость их работы(Выполнения сложения) #include <vcl.h> #pragma hdrstop #include <iostream> #include <math.h> #include <stdio.h> //#include <stdlib.h> #include <time.h>
C++ Создать класс выборки More размерности N Создать класс выборки More размерности N. Предусмотреть функции для выполнения следующих операций: консольный ввод / вывод значений выборки, расчет среднего, дисперсии, размаха, среднеквадратичного отклонения. Разработать дружественную функцию для расчета критерия Кохрена (G = Smax /∑ Si). Надеюсь на вашу помошь! Вот информация для помощи ... http://www.cyberforum.ru/cpp-beginners/thread434658.html
Сортировка массивом C++
Какой метод сортировки тут используется???? Можно ли как нибудь подстроить под метод подсчета??? #include "stdafx.h" #include <conio.h> #include <cstring> #include <cstdio> #include <iostream> using namespace std; const int N = 5;
Файл. Потоки C++
Здравствуйте, необходимо читать из файла числа, пользуясь потоками. Найдя максимальное число - затереть его пробелами. как мне быть?(не занося все числа в массив и не выводя заново массива в файл без макс. числа) Добавлено через 13 минут пока накидал только это, а вот как удалять - раз, два - не происходит вывод на экран перем. biggest, и КАК ПЕРЕМЕЩАТЬСЯ К СЛЕД. ЧИСЛУ В ФАЙЛЕ??int _tmain(int...
C++ Вопрос к "бывалым" http://www.cyberforum.ru/cpp-beginners/thread434602.html
Есть задача - нужно создать программу обучения английскому языку. - На ней должна быть табличка,которую можно править и которая реагирует на события, некоторые кнопки, она должна без проблем работать с бинарными файлами и иметь возможность "уходить" в трей. Что знаю: С++ - консоль, классы на среднем уровне. Имею опыт работы с .Net v4.0, Visual Studio. Посоветуйте библиотеку, под которой...
C++ Помогите вписать куб в конус Ребят всем привет! Помогите вписать куб в конус,чтобы куб касался краёв конуса своими углами! #include <iostream.h> #include <conio.h> #include <graphics.h> #include <string.h> #include <math.h> // Класс "Фигура" (базовый Класс) подробнее

Показать сообщение отдельно
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
24.01.2012, 23:11     Сравнение скорости
вечер добрый.
смотрел задачи на codeforces, и заметил, что 90% решений на с++ написано в таком стиле, код взят случайный -

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
 
#define REP(AA,BB) for(int AA=0; AA<(BB); ++AA)
#define FOR(AA,BB,CC) for(int AA=(BB); AA<(CC); ++AA)
#define FC(AA,BB) for(__typeof((AA).begin()) BB=(AA).begin(); BB!=(AA).end(); ++BB)
#define SZ(AA) ((int)((AA).size()))
#define ALL(AA) (AA).begin(), (AA).end()
#define PB push_back
#define MP make_pair
 
using namespace std;
 
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef long long LL;
typedef long double LD;
 
struct edge {
        int v, w, g, s;
        int operator<(const edge &e) const {
                if(g==e.g)
                        return s<e.s;
                return g<e.g;
        }
};
 
int n, m, G, S, now=0;
edge E[50010];
vector<PII> ve[210]; PII par[210];
int vis[210];
 
int path(int a, int b) {
        memset(vis, 0, sizeof(int)*(n+1));
        vis[a]=1; queue<int> Q; Q.push(a);
        while(!Q.empty()) {
                int v=Q.front(); Q.pop();
                REP(i,SZ(ve[v])) {
                        int k=ve[v][i].first, e=ve[v][i].second;
                        if(!vis[k]) {
                                vis[k]=1;
                                par[k]=MP(v, e);
                                Q.push(k);
                        }
                }
        }
        return vis[b];
}
 
int del(int co) {
        int mx=-1, a=E[co].v, b=E[co].w;
        while(b!=a) {
                if(mx==-1 || E[par[b].second].s>E[mx].s)
                        mx=par[b].second;
                b=par[b].first;
        }
        if(E[mx].s<=E[co].s)
                return 0;
        int v=E[mx].v, w=E[mx].w;
        REP(i,SZ(ve[v])) {
                if(ve[v][i].second==mx) {
                        swap(ve[v][i],ve[v].back());
                        ve[v].pop_back();
                        break;
                }
        }
        REP(i,SZ(ve[w])) {
                if(ve[w][i].second==mx) {
                        swap(ve[w][i],ve[w].back());
                        ve[w].pop_back();
                        break;
                }
        }
        --now;
        return 1;
}
 
void add(int e) {
        ve[E[e].v].PB(MP(E[e].w, e));
        ve[E[e].w].PB(MP(E[e].v, e));
        ++now;
}
 
LL cost() {
        int gg=0, ss=0;
        REP(i,n) {
                REP(j,SZ(ve[i])) {
                        gg=max(gg, E[ve[i][j].second].g);
                        ss=max(ss, E[ve[i][j].second].s);
                }
        }
        return (LL)G*gg+(LL)S*ss;
}
 
int main(void) {
        scanf("%d%d%d%d", &n, &m, &G, &S);
        REP(i,m) {
                scanf("%d%d%d%d", &E[i].v, &E[i].w, &E[i].g, &E[i].s);
                --E[i].v; --E[i].w;
        }
        sort(E,E+m); LL res=-1;
        REP(i,m) {
                if(path(E[i].v, E[i].w)) {
                        if(del(i))
                                add(i);
                }
                else
                        add(i);
                if(now==n-1) {
                        if(res==-1)
                                res=cost();
                        else
                                res=min(res, cost());
                }
        }
        printf("%I64d\n", res);
        return 0;
}
почему смешивают все, зачем дефэйнов столко? дело в скорости, или что?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru