#3600
numbers_tree
Se dă un șir a
de n
numere naturale nenule strict mai mari decât 1
, indexat de la 1
. Asupra acestui șir se aplică 3
tipuri de operații:
1 st dr val
– toate valorile a[i]
cu i
din intervalul [st, dr]
devin egale cu val
;2 st dr
– se cere să se afle câte elemente ale șirului a
care au indicii aflați în intervalul [st, dr]
sunt numere compuse(un număr natural este compus dacă are cel puțin 3
divizori);3 st dr
– se cere să se afișeze lungimea cele mai lungi secvențe de numere prime alcătuită exclusiv din elemente ale șirului care au indicii aflați în intervalul [st, dr]
(o secvență a unui șir este alcătuită din elemente aflate poziții consecutive).Dându-se Q
operații, să se raspundă în ordine la cele de tip 2
și 3
.
Problema | numbers_tree | Operații I/O |
![]() numbers_tree.in /numbers_tree.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 8 MB
/
Stivă 4 MB
|
Id soluție | #57818391 | Utilizator | |
Fișier | numbers_tree.cpp | Dimensiune | 7.85 KB |
Data încărcării | 21 Aprilie 2025, 18:09 | Scor / rezultat | Eroare de compilare |
numbers_tree.cpp:1:1: error: stray '\304' in program Pentru această problemă, trebuie să implementăm un **segment tree** (arbore de intervale) care să gestioneze eficient cele trei tipuri de operații: ^ numbers_tree.cpp:1:1: error: stray '\203' in program numbers_tree.cpp:1:1: error: stray '\304' in program numbers_tree.cpp:1:1: error: stray '\203' in program numbers_tree.cpp:1:1: error: stray '\304' in program numbers_tree.cpp:1:1: error: stray '\203' in program numbers_tree.cpp:1:1: error: stray '\304' in program numbers_tree.cpp:1:1: error: stray '\203' in program numbers_tree.cpp:1:1: error: stray '\304' in program numbers_tree.cpp:1:1: error: stray '\203' in program numbers_tree.cpp:1:1: error: stray '\310' in program numbers_tree.cpp:1:1: error: stray '\233' in program numbers_tree.cpp:3:1: error: stray '\303' in program 1. **Setarea valorilor într-un interval** la o valoare dată. ^ numbers_tree.cpp:3:1: error: stray '\256' in program numbers_tree.cpp:3:1: error: stray '\304' in program numbers_tree.cpp:3:1: error: stray '\203' in program numbers_tree.cpp:4:1: error: stray '\304' in program 2. **Numărarea numerelor compuse** dintr-un interval. ^ numbers_tree.cpp:4:1: error: stray '\203' in program numbers_tree.cpp:5:1: error: stray '\310' in program 3. **Determinarea lungimii celei mai lungi secvențe de numere prime** dintr-un interval. ^ numbers_tree.cpp:5:1: error: stray '\233' in program numbers_tree.cpp:7:1: error: stray '##' in program ### Pașii pentru rezolvarea problemei: ^ numbers_tree.cpp:7:3: error: stray '#' in program ### Pașii pentru rezolvarea problemei: ^ numbers_tree.cpp:7:1: error: stray '\310' in program ### Pașii pentru rezolvarea problemei: ^ numbers_tree.cpp:7:1: error: stray '\231' in program numbers_tree.cpp:9:1: error: stray '##' in program #### 1. **Identificarea numerelor prime și compuse:** ^ numbers_tree.cpp:9:3: error: stray '##' in program #### 1. **Identificarea numerelor prime și compuse:** ^ numbers_tree.cpp:9:1: error: stray '\310' in program #### 1. **Identificarea numerelor prime și compuse:** ^ numbers_tree.cpp:9:1: error: stray '\231' in program numbers_tree.cpp:11:1: error: stray '\304' in program - **Numere compuse**: Un număr compus este un număr natural care are mai mult de doi divizori. ^ numbers_tree.cpp:11:1: error: stray '\203' in program numbers_tree.cpp:11:1: error: stray '\304' in program numbers_tree.cpp:11:1: error: stray '\203' in program numbers_tree.cpp:12:1: error: stray '\304' in program - **Numere prime**: Un număr prim este un număr care are exact doi divizori (1 și el însuși). ^ numbers_tree.cpp:12:1: error: stray '\203' in program numbers_tree.cpp:12:1: error: stray '\304' in program numbers_tree.cpp:12:1: error: stray '\203' in program numbers_tree.cpp:12:1: error: stray '\310' in program numbers_tree.cpp:12:1: error: stray '\231' in program numbers_tree.cpp:12:1: error: stray '\303' in program numbers_tree.cpp:12:1: error: stray '\256' in program numbers_tree.cpp:12:1: error: stray '\310' in program numbers_tree.cpp:12:1: error: stray '\231' in program numbers_tree.cpp:14:1: error: stray '\304' in program Pentru a rezolva problema eficient, trebuie să știm rapid dacă un număr este prim sau compus. De aceea, vom folosi **metoda Eratostene** pentru a marca toate numerele prime până la 1.000.000. Acest lucru ne va permite să răspundem rapid la întrebările de tipul 2. ^ numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:1: error: stray '\310' in program numbers_tree.cpp:14:1: error: stray '\231' in program numbers_tree.cpp:14:1: error: stray '\304' in program numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:1: error: stray '\304' in program numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:1: error: stray '\303' in program numbers_tree.cpp:14:1: error: stray '\242' in program numbers_tree.cpp:14:1: error: stray '\304' in program numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:188: error: too many decimal points in number Pentru a rezolva problema eficient, trebuie să știm rapid dacă un număr este prim sau compus. De aceea, vom folosi **metoda Eratostene** pentru a marca toate numerele prime până la 1.000.000. Acest lucru ne va permite să răspundem rapid la întrebările de tipul 2. ^ numbers_tree.cpp:14:1: error: stray '\304' in program Pentru a rezolva problema eficient, trebuie să știm rapid dacă un număr este prim sau compus. De aceea, vom folosi **metoda Eratostene** pentru a marca toate numerele prime până la 1.000.000. Acest lucru ne va permite să răspundem rapid la întrebările de tipul 2. ^ numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:1: error: stray '\304' in program numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:14:1: error: stray '\303' in program numbers_tree.cpp:14:1: error: stray '\256' in program numbers_tree.cpp:14:1: error: stray '\304' in program numbers_tree.cpp:14:1: error: stray '\203' in program numbers_tree.cpp:16:1: error: stray '##' in program #### 2. **Implementarea Segment Tree:** ^ numbers_tree.cpp:16:3: error: stray '##' in program #### 2. **Implementarea Segment Tree:** ^ numbers_tree.cpp:18:1: error: stray '\304' in program Segment tree-ul trebuie să suporte următoarele operații: ^ numbers_tree.cpp:18:1: error: stray '\203' in program numbers_tree.cpp:18:1: error: stray '\304' in program numbers_tree.cpp:18:1: error: stray '\203' in program numbers_tree.cpp:18:1: error: stray '\310' in program numbers_tree.cpp:18:1: error: stray '\233' in program numbers_tree.cpp:19:1: error: stray '\304' in program - **Update**: Setează toate valorile dintr-un interval la o valoare dată. ^ numbers_tree.cpp:19:1: error: stray '\203' in program numbers_tree.cpp:19:1: error: stray '\304' in program numbers_tree.cpp:19:1: error: stray '\203' in program numbers_tree.cpp:20:1: error: stray '\304' in program - **Query** pentru numărul de numere compuse într-un interval. ^ numbers_tree.cpp:20:1: error: stray '\203' in program numbers_tree.cpp:20:1: error: stray '\303' in program numbers_tree.cpp:20:1: error: stray '\256' in program numbers_tree.cpp:21:1: error: stray '\304' in program - **Query** pentru găsirea celei mai lungi secvențe de numere prime dintr-un interval. ^ numbers_tree.cpp:21:1: error: stray '\203' in program numbers_tree.cpp:21:1: error: stray '\310' in program numbers_tree.cpp:21:1: error: stray '\233' in program numbers_tree.cpp:23:1: error: stray '\303' in program În plus, pentru optimizare, vom folosi **lazy propagation** pentru a evita actualizările inutile ale segmentelor. ^ numbers_tree.cpp:23:1: error: stray '\216' in program numbers_tree.cpp:23:1: error: stray '\304' in program numbers_tree.cpp:23:1: error: stray '\203' in program numbers_tree.cpp:25:1: error: stray '##' in program #### 3. **Structura Segment Tree-ului:** ^ numbers_tree.cpp:25:3: error: stray '##' in program #### 3. **Structura Segment Tree-ului:** ^ numbers_tree.cpp:26:1: error: stray '\310' in program Fiecare nod al segment tree-ului va conține: ^ numbers_tree.cpp:26:1: error: stray '\233' in program numbers_tree.cpp:27:1: error: stray '\304' in program - Numărul de numere compuse în intervalul respectiv. ^ numbers_tree.cpp:27:1: error: stray '\203' in program numbers_tree.cpp:27:1: error: stray '\303' in program numbers_tree.cpp:27:1: error: stray '\256' in program numbers_tree.cpp:28:1: error: stray '\310' in program - Lungimea celei mai lungi secvențe de numere prime. ^ numbers_tree.cpp:28:1: error: stray '\233' in program numbers_tree.cpp:29:1: error: stray '\310' in program - Lungimea secvenței de numere prime de la stânga și dreapta în interval. ^ numbers_tree.cpp:29:1: error: stray '\233' in program numbers_tree.cpp:29:1: error: stray '\303' in program numbers_tree.cpp:29:1: error: stray '\242' in program numbers_tree.cpp:29:1: error: stray '\310' in program numbers_tree.cpp:29:1: error: stray '\231' in program numbers_tree.cpp:29:1: error: stray '\303' in program numbers_tree.cpp:29:1: error: stray '\256' in program numbers_tree.cpp:31:1: error: stray '##' in program #### 4. **Detaliile implementării:** ^ numbers_tree.cpp:31:3: error: stray '##' in program #### 4. **Detaliile implementării:** ^ numbers_tree.cpp:31:1: error: stray '\304' in program #### 4. **Detaliile implementării:** ^ numbers_tree.cpp:31:1: error: stray '\203' in program numbers_tree.cpp:33:1: error: stray '\`' in program \`\`\`cpp ^ numbers_tree.cpp:33:1: error: stray '\`' in program numbers_tree.cpp:33:1: error: stray '\`' in program numbers_tree.cpp:1:1: error: 'Pentru' does not name a type Pentru această problemă, trebuie să implementăm un **segment tree** (arbore de intervale) care să gestioneze eficient cele trei tipuri de operații: ^ numbers_tree.cpp: In function 'int main()': numbers_tree.cpp:218:16: error: request for member 'update' in 'st', which is of non-class type 'int' st.update(st, dr, val); ^ numbers_tree.cpp:224:21: error: request for member 'queryCompCount' in 'st', which is of non-class type 'int' g << st.queryCompCount(st, dr) << '\n'; ^ numbers_tree.cpp:230:21: error: request for member 'queryPrimeSeq' in 'st', which is of non-class type 'int' g << st.queryPrimeSeq(st, dr) << '\n'; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema numbers_tree face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.