witam, ma ktoś pomysł na przyspieszenie tego kodu?
kod:
zadanie:https://pl.spoj.com/problems/BAJTIOS1/12
created
last reply
- 3
replies
- 541
views
- 3
users
- 2
likes
- 3
links
witam, ma ktoś pomysł na przyspieszenie tego kodu?
kod:
zadanie:https://pl.spoj.com/problems/BAJTIOS1/12
Jest pewien sposób, dzięki któremu można obliczać zapytania typu “suma liczb o indeksach od a do b” w czasie stałym O(1). Najpierw może spróbuj sam wpaść na niego (wskazówka: używając tego sposobu każda zmiana liczby dzieje się w czasie liniowym O(n) zamiast zwykłego O(1)). Jeśli nie uda Ci się, to pogoogluj. Jak nadal nic nie znajdziesz, napisz tutaj. I nie denerwuj się jak nie zrozumiesz/znajdziesz, mi też to na początku sprawiło kłopot i musiałem znaleźć ten sposób w internecie.
"ios_base::sync_with_stdio(0);"
a potem "cout << .... << endl"
<---- znaczysię był na lekcji ale nie uważał?vector <doble>
do pamiętania wartości 0 / 1
[true/false]a, b, numberOfInquiries
czy thePermissibleLevelOfContamination, numberOfInquiries
. To jest temat rzeka, dobrym żródłem wiedzy jest np ksiązka Czysty kod [Clean code]. Mimo najlepszych chęci nie ma sposobu, aby przez opisowość [tutaj nie tylko moim zdaniem nadmiarową] kod stał się w 100% procentach samodokumentujący. I tak trzeba zajrzeć do źródeł problemu - tutaj treści zadania. Dobrym pomysłem jest nazywanie rzeczy po angielsku ale … Gdy brak pomysłu można użyć nazw [nawet jedno literowych] zaproponowanych przez autora zadania. Sorry, że to wywlokłem, i tak to rozwlekam/wałkuję, ale to twój kolejny tutaj taki kod i powinieneś mieć świadomość o błędach [moim zdaniem]. Poniżej, przykłady, którem nie są może ścisłymi kopiami twoich nazw, ale chodziło mi o pokazanie sensu:int jakasZmiennaLiczbowaZIloscZapytan [theNumberOfInqueries
int
mówi o deklaracji zmiennej typu int [liczba całkowita] ale np:int pytania [queries] lub po prostu int q
set <int> SetOfAllNumbersA
… ale raczej set <int> A
- nawet używając dużej litery, set to po angielsku między innymi zbiór a w języku matematyki też tak się oznacza zbiór.while (dni--)
{
double srednia {}; /// lub sredna = 0
cin >> pomiar;
for (int i {}; i < m; ++i) /// m == u Ciebie numberOfMeasurementPoints
srednia += pomiar[i] - '0';
/*
lub
for (auto i : pomiar)
srednia += i - '0';
*/
srednia /= m;
....
itd
Każdy koder napisze to po swojemu, więc jeszcze inaczej:
while (dni--) {
int tmp {}; //nie mam pomysłu na dobrą, krótką nazwę - sumaPomiarów?
for (auto i : pomiar)
tmp += i - '0';
// doble srednia = static_cast <double> (tmp) / m;
///czy też od razu:
if ( static_cast <double> (tmp) / m < dopuszczalnego) .....
else ......
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 152 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 75 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 187 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 125 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 127 | Jul '24 |