infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Mircea Pasoi din Noiembrie 18, 2004, 00:33:39



Titlul: 043 Boom
Scris de: Mircea Pasoi din Noiembrie 18, 2004, 00:33:39
Aici puteţi discuta despre problema Boom (http://infoarena.ro/problema/boom).


Titlul: 043 Boom
Scris de: Bindea Calin din Noiembrie 21, 2004, 18:43:30
Asi avea si eu o problema la probl. Am facut o rezolvare care cred ca e buna, dar nu obtin doar 90  :shock: pe ea. Testul 2 nu merge nicicum. Imi scapa ceva minor si ma chinui de mult sa-mi dau seama. Dc poate cineva sa-mi dea ceva indicii referitor la ce ar avea testul 2 in particular. mersi


Titlul: 043 Boom
Scris de: Mircea Pasoi din Noiembrie 21, 2004, 20:36:00
Citat din mesajul lui: ParrAzitU
Asi avea si eu o problema la probl. Am facut o rezolvare care cred ca e buna, dar nu obtin doar 90  :shock: pe ea. Testul 2 nu merge nicicum. Imi scapa ceva minor si ma chinui de mult sa-mi dau seama. Dc poate cineva sa-mi dea ceva indicii referitor la ce ar avea testul 2 in particular. mersi


Testul 2:
Cod:

boom.in
5 5
777 1 1
1325 1 2
4431 1 3
9774 1 4
7086 1 5


Cod:

boom.out
31060
6
2
3
4
2
3
4


Titlul: 043 Boom
Scris de: tudor george cristian din Martie 23, 2005, 12:58:39
imi da si mie cineva o idee la problema asta ?


Titlul: 043 Boom
Scris de: Cosmin Negruseri din Martie 23, 2005, 13:57:35
Vezi aici: http://info.devnet.ro/articole.php?page=art&art=25&artpage=1 . Ar fi bine sa va mai uitati pe articolele de pe site, poate gasiti ceva interesant.


Titlul: 043 Boom
Scris de: tudor george cristian din Martie 23, 2005, 14:03:27
da...ar fi ceva. multumesc mult.


Titlul: 043 Boom
Scris de: Gogu Marian din Martie 23, 2005, 21:12:06
Voi ati bagat jumatate din teste de dimensiune maxima?
Initial luam 50 din cauza TLE, si dupa ce am omorat dikjstra cand am in varful heap-ului nodul terminal, am luat 100.
Bagati teste mai echilibrate


Titlul: 043 Boom
Scris de: Silviu-Ionut Ganceanu din Martie 23, 2005, 22:33:58
Citat
Voi ati bagat jumatate din teste de dimensiune maxima?


NU.

Citat
Bagati teste mai echilibrate


 =D>


Titlul: 043 Boom
Scris de: Gogu Marian din Martie 23, 2005, 23:14:49
Sorry atunci. Doar ca pe un test maxim care sa fie facut cat mai defavorabil, cred ca programul ar sta cateva secunde bune. Torusi, e O(2^N*N*M) pentru n=20 si M=50, cateva miliarde de operatii.
Sau poate se gaseste foarte repede solutia pe teste random.
E ceva demonstrat in sensul asta?
Oricum, interesanta problema.


Titlul: 043 Boom
Scris de: Silviu-Ionut Ganceanu din Martie 24, 2005, 00:18:16
Citat
Urmeaza Q numere (Q nu este mai mare decat 4) reprezentand camerele gazate.


Citatul este din problema. Graful nu va arata foarte urat din acest motiv (am intuit eu).

Trebuie sa fii de acord ca este supraestimata complexitatea. Solutia mea, spre exemplu, utilizeaza o prepocesare care reduce numarul de noduri din graful respectiv prin considerarea configuratiilor in care se poate ajunge. Parca numarul maxim de noduri era ~ 30,000

Si, in final, au existat solutii care au complexitatea maxima (chiar si pe testele mele pentru ca nu tin cont de faptul ca ele sunt relativ particulare) si care au rulat foarte rapid. Aceastea au folosit arbori de intervale in locul heapurilor in algoritmul Dijkstra.


Titlul: 043 Boom
Scris de: VladS din Iulie 20, 2005, 11:44:53
Tot iau TLE pe ultimele doua teste. Am cateva optimizari dar nu cred ca sunt suficiente: fac BFS din nodul 1<<n - 1 si introduc in heap doar nodurile accesibile. Totul este intr-o singura functie. Si pentru aplicarea unei sarje folosesc operatii pe biti. Mai stiti optimizari care m-ar putea ajuta.


Titlul: 043 Boom
Scris de: Mircea Pasoi din Iulie 20, 2005, 14:31:18
Citat din mesajul lui: TYTUS
Tot iau TLE pe ultimele doua teste. Am cateva optimizari dar nu cred ca sunt suficiente: fac BFS din nodul 1<<n - 1 si introduc in heap doar nodurile accesibile. Totul este intr-o singura functie. Si pentru aplicarea unei sarje folosesc operatii pe biti. Mai stiti optimizari care m-ar putea ajuta.


Cand  aplici o sarja cum faci pe biti mai exact? Eu aveam doua operatii pentru a obtine noua configuratie si luam 80p; cand am inversat ordinea in care faceam operatiile am luat 100p (se pare ca asa ajunge mai repede la destinatie)


Titlul: 043 Boom
Scris de: VladS din Iulie 20, 2005, 15:55:35
Fac nod & sarja
Cod:

int nod=(c<<1)|(c>>1);
if (nod>=(1<<n)) nod-=1<<n;
nod&=sarje[i];
}


Titlul: 043 Boom
Scris de: Mircea Pasoi din Iulie 20, 2005, 20:39:29
Cod:
      int nod=(c<<1)|(c>>1); 
      if (nod>=(1<<n)) nod-=1<<n;
      nod&=sarje[i];


Fa operatiile in ordine inversa aici.


Titlul: 043 Boom
Scris de: VladS din Iulie 21, 2005, 11:07:51
10x domino. Acum a rulat super repede 0.1 sec cel mai mult. De fapt asta si era si ordinea: intii petrica aplica sarja si apoi sobolanul se muta.


Titlul: 043 Boom
Scris de: Marius Stroe din Februarie 19, 2006, 23:33:24
Pentru
Cod:

5 5
777 1 1
1325 3 2 3 4
4431 2 3 1
9774 2 4 5
7086 1 5

da cumva
Cod:

13843
7
2
1
1
2
1
3
3

Am "You spent to much!" pe ultimele 8 teste...  :(


Titlul: 043 Boom
Scris de: Bogdan-Cristian Tataroiu din Februarie 20, 2006, 16:07:23
Cod:
2650
2
2
2


Titlul: 043 Boom
Scris de: Otilia Stretcu din Martie 31, 2010, 13:49:50
     Stiti sa imi spuneti si mie de la ce as putea avea eroarea "Incompatible output!"? Sursa mea ia 80 puncte, cu eroarea acesta pe testele 6 si 9. Am vazut erori de genul ,,The rat is still alive!" sau  ,,You have spent too much!", dar in acest caz nu reusesc sa imi dau seama de unde ar putea fi.


Titlul: Răspuns: 043 Boom
Scris de: Alexandru-Iancu Caragicu din Martie 31, 2011, 16:06:02
"Daca acesta este intr-una din camerele gazate moare pe loc; daca nu, camera nu pateste nimic si sobolanul poate circula prin ea imediat dupa detonarea bombei."

Cred ca e un pic mai clar asa.


Titlul: Răspuns: 043 Boom
Scris de: mihai995 din Aprilie 10, 2011, 12:09:49
iau 80 de pct cu TLE si nu stiu de ce :-k.

Ca idee, cat de mare poate fi costul unei sarje?


Titlul: Răspuns: 043 Boom
Scris de: Petru Trimbitas din Aprilie 10, 2011, 12:25:29
2^21 cred


Titlul: Răspuns: 043 Boom
Scris de: Valentin Harsan din Mai 03, 2012, 17:39:54
cred ca ar mai trebui marita un pic limita de timp  :-' :-'
cu o sursa de o(2^20 * m) cu optimizarile pe biti nu iau decat 90 :(


Titlul: Răspuns: 043 Boom
Scris de: Petru Trimbitas din Martie 20, 2013, 23:22:12
E prea mica limita de timp


Titlul: Răspuns: 043 Boom
Scris de: Petcu Ioan Vlad din Martie 21, 2013, 09:29:51
Limita e buna am luat 100 cu priority queue din stl, ar trebui chiar micsorata pentru a lua 100 numai cu heap-uri de mana.


Titlul: Răspuns: 043 Boom
Scris de: Andrei Stanciu din Mai 02, 2013, 09:23:36
Am "You have spent too much!" pe ultimele 8 teste, si totusi imi merg toate testele date pe forum. Poate sa mai imi dea si mie cineva un test? Multumesc.


Titlul: Răspuns: 043 Boom
Scris de: Paul-Dan Baltescu din Mai 02, 2013, 12:41:48
De ce nu generezi tu testele si sa ne ceri doar rezultatul corect? E tare neconvenabil sa ne gandim noi ce ai fi putut tu gresi si sa generam teste cu astfel de exemple.


Titlul: Răspuns: 043 Boom
Scris de: Andrei Stanciu din Mai 03, 2013, 11:02:20
ok. Imi cer scuze. Pentru
Cod:
10 6
20 3 1 2 3
20 3 2 3 4
5 1 4
5 1 5
10 4 7 8 9 10
17 3 5 6 7

e bun:

Cod:
77
6
2
4
5
6
4
2
??


Titlul: Răspuns: 043 Boom
Scris de: Paul-Dan Baltescu din Mai 03, 2013, 11:48:35
Iti da bine.


Titlul: Răspuns: 043 Boom
Scris de: Alexandru Valeanu din August 31, 2013, 11:25:49
Am si eu o nelamurire despre cum se formeaza graful. Eu am incercat sa parcurg toate nodurile de la 0->2n-1 si pentru fiecare nod aflu vecini are cam asa:
Cod:
for ( int i = 0; i < ( 1 << N ); ++i )
    {
        for ( int j = 1; j <= M; ++j )
        {
            int nod = i | sarje[j].nr;

            node x = { nod, sarje[j].P };
            G[i].push_back( x );
        }
    }
Problema este ca atunci cand fac Dijkstra de la 0 la 2n-1, pe exemplu imi da 3(de la nodul 0 folosind sarja 1 merge in 5 si din 5 folosind sarja 2 merge in 7). Am gresit modul de constructie al grafului sau imi scapa altceva...?


Titlul: Răspuns: 043 Boom
Scris de: sebi nechita din Noiembrie 13, 2014, 20:59:42
Salut. Am facut problema de 100 dar am o nelamurire. :D Am doua surse care iau 100, una cu heapuri de mana optimizate pe biti si cealalta care foloseste priority_queue din STL. 8) Siiii spre surprinderea mea sursa cu heapuri merge muuult mai greu decat aia cu PQ...ca sa nu mai vorbim de memorie care ii dubla. Memoria sa zicem ca o inteleg deoarece presupun ca o sa am pe teste random, relativ putine noduri in heap la un moment dat. Dar heapurile de mana nu ar trebui sa mearga mai rapid?!? ](*,)  ???