Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 11

Нужно ускорить программу

13.06.2020, 18:25. Показов 786. Ответов 7

Студворк — интернет-сервис помощи студентам
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
#include <iostream>
using namespace std;
 
int a;
 
long long m[a];
 
long long q;
 
void add( int a,int b,int c ){
 
    for( int i = a-1 ; i < b-1 ; i += 2 ) {
 
        m[i] += c;
        m[i+1] += c;
 
    }
    if( (b-a+1)%2 == 1 ){
 
        m[b-1] += c;
 
    }
    return;
 
}
 
long long square(int a,int b){
 
    q = 0;
 
    for( int i = a-1 ; i < b-1 ; i += 2 ){
 
        q += (m[i]*m[i])+(m[i+1]*m[i+1]);
 
    }
    if( (b-a+1)%2 == 1 ){
 
        q += m[b-1]*m[b-1];
 
    }
 
    return q;
 
}
 
int main() {
 
    int b,c,d,e,f;
 
    cin >> a >> b;
 
    for( int i = 0 ; i < a ; i++ ){
 
        cin >> m[i];
 
    }
    for( int i = 1 ; i <= b-1 ; i += 2 ){
 
        cin >> c;
 
        if( c == 2 ){
 
            cin >> d >> e;
 
            cout << square(d,e) << endl;
 
        }
 
        else if( c == 1 ){
 
            cin >> d >> e >> f;
 
            add(d,e,f);
 
        }
 
        cin >> c;
 
        if( c == 2 ){
 
            cin >> d >> e;
 
            cout << square(d,e) << endl;
 
        }
 
        else if( c == 1 ){
 
            cin >> d >> e >> f;
 
            add(d,e,f);
 
        }
 
    }
 
    if( b%2 == 1 ){
 
        cin >> c;
 
        if( c == 1 ){
 
            cout << "";
 
        }
        else if( c == 2 ){
 
            cin >> d >> e;
 
            cout << square(d,e) << endl;
 
        }
 
    }
 
}

Суть программы в том что вводится массив а после он изменяется в и действий и каждый раз когда с == 2 он должен выводить ответ,а если с == 1 то должен его увеличивать на f(только отрезки).

Помогите ускорить работу программы чтобы она работала менее чем 1 секунды при этом чтобы код давал те же ответы что и в этом коде.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2020, 18:25
Ответы с готовыми решениями:

Нужно ускорить код
Мне нужно написать программу, для преобразования коэффициентов системы и столбца свободных членов к виду, необходимому для импорта в...

Деление больших чисел (нужно ускорить)
Ребятки, помогите ускорить. Уж очень медленно. Класс совсем простой(вектор со знаком): static const unsigned long long BASE =...

Нужно ускорить код. Буду очень благодарен
Условие задачи: Вводиться число n, затем вводятся n чисел. Нужно с последней введенной цифры до первой вывести число, и сколько раз оно...

7
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
13.06.2020, 18:47
1. размер статического массива должен быть КОНСТАНТНЫМ
2. можно переформулировать задание? я не особо понял
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
когда с == 2 он должен выводить ответ
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
cout << square(d,e) << endl;
это не особо напоминает просто вывод ответа, тут что-то считается

Цитата Сообщение от LuckyBoyz Посмотреть сообщение
а если с == 1 то должен его увеличивать на f
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
add(d,e,f);
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
только отрезки
какие отрезки, что за d, e, что тут происходит?
0
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 11
14.06.2020, 14:06  [ТС]


Если с == 1 то вводится отрезок d и e(d < e) и выполняется функция add

Если с == 2 то вводится уже новый отрезок d и e(d < e) и выполняется функция square (в square он должен вывести ответ сумму квадратов отрезка от d до e вкл.)



Добавлено через 10 минут
Массив должен быть глобальным иначе его не видят функций.(Если можно сделать его константным при этом чтобы функций считывали именно этот уже константный массив мне будет приятно посмотреть)

2.Если переформулировать нужно просто ускорить работу программы т.е ускорить выполнение функций и циклов(а работа самой программы должна быть менее 1 сек).
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
14.06.2020, 15:28
LuckyBoyz, эта программа работать не может. Как ты всё это писал, если не проверил даже как просто первое число вводить и массив объявить?
1
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 11
14.06.2020, 15:41  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
эта программа работать не может. Как ты всё это писал, если не проверил даже как просто первое число вводить и массив объявить?
Да сильно при сильно извеняюсь код не тот отправил
0
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 11
14.06.2020, 15:44  [ТС]
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
#include <iostream>
using namespace std;
 
long long m[100000];
 
long long q;
 
void add( int a,int b,int c ){
 
    for( int i = a-1 ; i < b ; i++ ) {
 
        m[i] += c;
 
    }
    return;
 
}
 
long long square(int a,int b){
 
    q = 0;
 
    for( int i = a-1 ; i < b ; i++ ){
 
        q += m[i]*m[i];
 
    }
 
    return q;
 
}
 
int main() {
 
    int a,b,c,d,e;
 
    int f;
 
    cin >> a >> b;
 
    for( int i = 0 ; i < a ; i++ ){
 
        cin >> m[i];
 
    }
    for( int i = 1 ; i <= b ; i++ ){
 
        cin >> c;
 
        if( c == 2 ){
 
            cin >> d >> e;
 
            cout << square(d,e) << endl;
 
        }
 
        if( c == 1 ){
 
            cin >> d >> e >> f;
 
            add(d,e,f);
 
        }
 
    }
 
}
Вот код который должен работать вот в нем нужно увеличить работу со временем
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.06.2020, 16:01
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
long long m[100000];
ему вообще норм? stack overflow нет?
Цитата Сообщение от LuckyBoyz Посмотреть сообщение
Массив должен быть глобальным иначе его не видят функций
агрументы, не не слышали?

[del]

Добавлено через 11 минут
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
#include <iostream>
#include <string>
#include <vector>
 
int64_t square(std::vector<int>& m, size_t d, size_t e)
{
    int64_t sum = 0;
    for (size_t i = d - 1; i < e; i++)
    {
        sum += m[i] * m[i];
    }
        return sum;
}
 
void add(std::vector<int> &m, size_t d, size_t e, int64_t f)
{
    for (size_t i = d - 1; i < e; i++)
    {
        m[i] += f;
    }
}
 
int main()
{
    size_t a, b;
    std::cin >> a >> b;
    std::vector<int> m(a);
 
    for (size_t i = 0; i < a; i++)
    {
        std::cin >> m[i];
    }
 
    for (size_t i = 1; i <= b; i++)
    {
        int16_t c;
        std::cin >> c;
 
        size_t d, e;
        if (c == 2)
        {
            
            std::cin >> d >> e;
 
            std::cout << square(m, d, e) << std::endl;
        }
        else if (c == 1)
        {
            int64_t f;
            std::cin >> d >> e;
            std::cin >> f;
            add(m, d, e, f);
        }
    }
}
вот без сраных статических массивов
0
0 / 0 / 0
Регистрация: 13.06.2020
Сообщений: 11
14.06.2020, 16:27  [ТС]
Возникли две проблемы:
1)Массив маленький(Потому я и задал ему тип long long'a)
2)По скорости он все еще не проходить (должно работать менее 1 сек)

Также прошу прощения за изначально неправильный код
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2020, 16:27
Помогаю со студенческими работами здесь

Ускорить программу на C++
Требуется ускорить эту программу тесты 7 6 3 4 36 2 2 1 1 2 2 2 1 2 4 Программа: #include...

Ускорить программу
моя программа очень долго заносит данные из файла в мемо1 я так думаю это из-за того что считывание идет по циклу я знаю что можно щитати...

Нужно ускорить программу переезда студентов
Здравствуйте. Мне нужно ускорить работу моей программы... помогите пожалуйста using System; namespace ConsoleApplication10 { ...

Нужно ускорить процесс
Делаю фильтр к таблице AdvStringGrid, на подобии Excel. При открытии фильтра нужно пробежаться по всем записям запроса, а внутри еще один...

Нужно ускорить работу программы
m=int(input()) a=input().split() b= d=0 for i in range(len(a)): b.append((2**i)/int(a)) while m!=0: m-=int(a) ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru