infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Dan-Leonard Crestez din Martie 08, 2004, 20:04:36



Titlul: 019 Pavare
Scris de: Dan-Leonard Crestez din Martie 08, 2004, 20:04:36
Aici puteţi discuta despre problema Pavare (http://infoarena.ro/problema/pavare).


Titlul: 019 Pavare
Scris de: Oltean Dorin din Iulie 29, 2005, 20:42:14
ce este cu problema asta de obtin tot 50 p pe ia ???
exista cazuri particulare??
ce trebuie facut pt a obtine mai mult de 50 p :?:


Titlul: 019 Pavare
Scris de: cristi8 din Iulie 29, 2005, 21:40:08
..pai zi cum faci..

si ce se intampla la restul testelor ? TLE sau Wrong Answer ?


..chiar.. pt cine a rezolvat problema.. am inteles ca se face back pe prima coloana si in rest PD... si eu tot nu ma prind cum se face dinamica aia.. poate sa imi dea cineva vreun indiciu ?


Titlul: 019 Pavare
Scris de: Mircea Pasoi din Iulie 29, 2005, 21:54:45
Citat din mesajul lui: Fr3eM4n
..pai zi cum faci..

si ce se intampla la restul testelor ? TLE sau Wrong Answer ?


..chiar.. pt cine a rezolvat problema.. am inteles ca se face back pe prima coloana si in rest PD... si eu tot nu ma prind cum se face dinamica aia.. poate sa imi dea cineva vreun indiciu ?


Nu se face back pe prima linie... se face dinamica si back pe fiecare linie.. metoda se mai numeste si "dinamica + back" :).. gasesti mai multe detalii in handbook-ul cu solutiile de la IOI 2001 , cat si in solutiile de la CEOI 2002 unde s-a dat o problema asemanatoare.


Titlul: 019 Pavare
Scris de: cristi8 din Iulie 30, 2005, 07:17:42
:) mersi, o sa citesc solutile.. intre timp sunt uimit ca am scos 90 de puncte doar punand patratele la intamplare timp de 1.45 secunde :D


Titlul: 019 Pavare
Scris de: Tiberiu-Lucian Florea din Iulie 31, 2005, 14:22:52
Eu zic sa le pui la intamplare 1.49 secunde... cine stie poate scoti suta.


Titlul: 019 Pavare
Scris de: cristi8 din Iulie 31, 2005, 19:22:42
..si eventual sa trimit de vreo 10 ori aceasi sursa, poate prind un timer bun :D

..nu, eram doar curios cam cat scot cu ceva randomizat


Titlul: 019 Pavare
Scris de: Oltean Dorin din August 01, 2005, 09:20:27
mersi pt informatii acum poate o sa iasa ceva  :wink:


Titlul: 019 Pavare
Scris de: Dobre Catalin Andrei din August 01, 2005, 16:36:02
Eu am luat 70 p pe ea.Ii o solutie foarte simpla.Incep din coltul stanga sus si parcurg matricea.Cum gasesc spatiu liber acopar.Asa iei 50p probabil multi au facut asa.Dar mai este o chestie si poti lua 70 p.Parcurgi din toate cele 4 colturi si pastrezi solutia cea mai buna.


Titlul: 019 Pavare
Scris de: VladS din August 08, 2005, 19:57:58
Voua cat va da pe
Cod:

30 15 20
23 10
11 2
12 6
14 14
22 6
23 5
8 9
1 5
9 7
10 6
12 14
25 15
2 8
9 4
22 11
8 7
5 10
30 9
7 13
22 14

84 e bun?


Titlul: 019 Pavare
Scris de: Oltean Dorin din August 08, 2005, 20:06:45
mie imi da altfel da oricum nu te lua dupa mina ca io nu am facut-o de 100 de puncte [-X


Titlul: 019 Pavare
Scris de: Bogdan-Cristian Tataroiu din August 08, 2005, 20:49:58
93


Titlul: 019 Pavare
Scris de: VladS din August 09, 2005, 09:25:57
Multumesc bogdan. Faza era ca accesam o zona de memorie care nu exista si nu primeam segmentasion fault. Tipul bool se comporta cam ciudat.


Titlul: 019 Pavare
Scris de: nivan din Octombrie 12, 2005, 19:42:42
Poate imi zice si mie cineva de ce nu merge varianta care ia 50 de puncte. Eventual sa-mi dea un exemplu pe care sa nu mearga.

   Reamintesc variannta: iei fiecare elemnt din matrice de 2*2 si vezi dak e liber dak e liber il acoperi.


Titlul: 019 Pavare
Scris de: Tiberiu-Lucian Florea din Octombrie 12, 2005, 19:46:18
Parerea mea e ca pui problema gresit. Gandirea "am un greedy, demonstrati-mi ca nu merge", e proasta. O rezolvare nu merge pana cand nu ai demonstrat-o. Deci spune-ne tu noua de ce crezi ca merge.

Bafta !


Titlul: 019 Pavare
Scris de: Daniel Pasaila din Octombrie 12, 2005, 20:13:22
Nu stiu daca am inteles prea bine solutia ta. Merge pe exemplul urmator?

* . . *
. . . .
. . . .

Aici '.' reprezinta o zona ce poate fi acoperita. Daca tu acoperi prima posibilitate, ai:
* \ \ *
. \ \ .
. . . .

Unde '\' reprezinta o zona acoperita. Iata o solutie corecta:

* . . *
/ / \ \
/ / \ \

Vezi ca am pus 2 placi de 2 * 2.

Daca vrei indicatii la problema cauta problema Bugs de la CEOI 2002 parca.


Titlul: 019 Pavare
Scris de: Andrei Grigorean din Noiembrie 18, 2005, 00:08:22
edit: am vazut ca problema s-a rezolvat si in 0.02 secunde ptr cazul maxim...

nu ne spuneti si noua muritorii de rand cum se face? sau e cu jmen si atunci e interzis?


Titlul: 019 Pavare
Scris de: Bogdan-Cristian Tataroiu din Noiembrie 18, 2005, 09:58:56
Te referi de exemplu la mine? :)
Am ceva genu N * 2 ^ M si nu e nici un jmen. Gandeste-te :) Good luck  :thumbup:


Titlul: 019 Pavare
Scris de: Filip Cristian Buruiana din Noiembrie 18, 2005, 21:52:07
Citat
gasesti mai multe detalii in handbook-ul cu solutiile de la IOI 2001 , cat si in solutiile de la CEOI 2002 unde s-a dat o problema asemanatoare.


Titlul: 019 Pavare
Scris de: u-92 din Februarie 01, 2006, 23:52:30
tocmai am citit postul legat de propunerea testelor de catre concurenti.. si aici cred ca s-ar putea aplica. am vazut mai sus ca se iau 50-70 puncte cu parcurgeri simple ale matricei. totodata, cred ca ar putea fi micsorata si limita de timp pentru a pica rezolvarile random :P

numai bine.


Titlul: 019 Pavare
Scris de: Daniel Pasaila din Februarie 02, 2006, 09:04:46
Nu cred ca la aceasta problema se poate lua punctajul maxim cu o rezolvare incorecta... Totodata, arhiva de probleme nu este tocmai un concurs la care sa fie nevoie de o departajare, deci nu vad nici o problema daca o solutie mai simplista va lua 60-70 de puncte. Totusi, daca doriti sa rezolvati problemele, trebuie sa atingeti 100 de puncte, nu mai putin:).


Titlul: 019 Pavare
Scris de: Cosmin Negruseri din Februarie 02, 2006, 22:04:20
Pe langa asta in concurs nu ai vreme sa incerci toate variantele dubioase si sa vezi care ia mai mult deci e sansa mica sa prinzi 70 de puncte.


Titlul: 019 Pavare
Scris de: Silviu-Ionut Ganceanu din Februarie 03, 2006, 03:24:10
Desi .. daca nu ai altceva mai bun de facut .. :)


Titlul: 019 Pavare
Scris de: u-92 din Februarie 03, 2006, 16:05:19
in ultimele 15-20 minute nu am avut altceva mai bun de facut  :D
testele 1,2,3,4,6,7,9 ar trebui modificate.. daca cineva e interesat sa-mi dea un pm..


Titlul: 019 Pavare
Scris de: Andrei Grigorean din Februarie 03, 2006, 17:41:33
acum nici chiar sa elimini toate testele mici. asa, vreo 40 de puncte ar merge cu bulaneli.


Titlul: 019 Pavare
Scris de: Cosmin Negruseri din Februarie 03, 2006, 21:27:50
Mai u ... poate ca si pe testele tale, dupa vreo jumatate de an se gaseste cineva sa ia punctaj maxim cu 2 foruri pentru ca asa se intampla pe online judgeuri, nu poti sa faci tot timpul teste foarte dure pentru toate rezolvarile posibile si imposibile.


Titlul: 019 Pavare
Scris de: u-92 din Februarie 03, 2006, 21:41:16
probabil ca asa este.. si daca tot nu se ia maxim cu o solutie gresita..


Titlul: Raspuns: 019 Pavare
Scris de: Paul-Dan Baltescu din Septembrie 21, 2006, 11:39:32
Imi puteti spune cat va da pe testul asta?

Cod:
150 15 114
3 3
5 9
7 12
9 14
10 15
11 1
13 2
13 15
14 4
17 13
19 4
21 4
22 3
22 15
23 3
24 2
24 14
28 4
29 9
30 7
32 2
34 9
35 6
35 15
36 3
38 12
39 8
42 3
42 4
46 3
46 12
47 13
50 11
51 2
53 9
54 2
55 9
55 11
56 3
56 10
57 4
60 2
64 7
66 3
67 6
68 1
68 10
70 10
70 14
71 2
71 11
72 1
73 1
73 11
74 5
76 15
77 3
79 3
80 7
80 13
83 8
85 2
87 8
89 4
90 7
91 15
92 11
93 3
93 4
93 15
94 15
95 2
97 5
99 11
99 15
101 12
101 15
106 1
107 2
107 10
107 11
107 12
110 8
112 5
112 10
112 15
114 10
114 15
118 5
119 12
124 10
125 3
131 12
133 1
133 2
133 14
134 8
134 14
135 5
136 3
136 4
136 7
139 10
140 4
141 2
141 3
142 10
142 12
143 10
143 11
143 14
145 13
147 3
149 15

Multumesc.


Titlul: Raspuns: 019 Pavare
Scris de: u-92 din Septembrie 21, 2006, 14:31:07
474

ps: a stat o gramada sa-l rezolve pe calculatorul meu  :-k


Titlul: Raspuns: 019 Pavare
Scris de: Paul-Dan Baltescu din Septembrie 21, 2006, 16:03:30
Mersi. :) Atata imi dadea si mie. Aveam un bug [uitasem sa reinitializez ceva 0], dar l-am gasit.

Apropo de timpul de executie: si mie imi merge groaznic pe teste "rare", cum e cel postat mai sus. Imi ia 2-3 secunde pe putin. :|


Titlul: Raspuns: 019 Pavare
Scris de: Mircea Pasoi din Septembrie 21, 2006, 22:59:57
Solutia oficiala este O(N*M*2^M) .. totusi s-a luat 100 si cu solutii mai putin eficiente.. in loc sa faci dinamica pe stari linie cu linie, mai bine se face element cu element (vezi solutia de la CEOI 2002 - Bugs).


Titlul: Răspuns: 019 Pavare
Scris de: Radulea Adrian din Martie 14, 2008, 13:09:40
imi da si mie cineva un test mai mic si cu smen l problema asta ca s m prind si yo unde gresesc.... ](*,) pls  :D


Titlul: Răspuns: 019 Pavare
Scris de: Tofan Vasile din Aprilie 01, 2008, 19:24:52
De ce nu intra O(N*M*2^M) in timp pe ultimul test?  ???
S-a redus complexitatea solutiei oficiale?


Titlul: Răspuns: 019 Pavare
Scris de: Stefan Istrate din Aprilie 01, 2008, 19:30:59
Nu cred. Tocmai am retrimis sursa si intra fara probleme: http://infoarena.ro/job_detail/169619. Incearca sa faci eficient operatiile alea pe biti.


Titlul: Răspuns: 019 Pavare
Scris de: Posea Elena din Aprilie 20, 2008, 19:16:52
Salut!...am "rezolvat" problema de ceva vreme, si pt datele de test pe care le dau eu, rezultatul pare bun...totusi iau 40p, pic la testele 3  5 7 8 9 10; daca puteti posta macar una dintre teste (si solutia),poate ma prind ce nu merge.... ](*,)


Titlul: Răspuns: Raspuns: 019 Pavare
Scris de: Posea Elena din Aprilie 20, 2008, 19:27:31
474

ps: a stat o gramada sa-l rezolve pe calculatorul meu  :-k
Sigur pentru datele postate da 474? mie imi da 458 :?


Titlul: Răspuns: 019 Pavare
Scris de: Savin Tiberiu din Aprilie 20, 2008, 19:42:17
Testele oficiale nu o sa le primesti (face parte din politica Infoarena).

Da raspunsul la testele de pe forum este corect. Explica-ne cum ne faci si poate te vom putea ajuta.


Titlul: Răspuns: 019 Pavare
Scris de: Posea Elena din Aprilie 20, 2008, 20:05:57
Testele oficiale nu o sa le primesti (face parte din politica Infoarena).

Da raspunsul la testele de pe forum este corect. Explica-ne cum ne faci si poate te vom putea ajuta.

Am doua functii principale: compl1() si compl2();
Am declarat un vector [151]; pe locul i se afla 0 daca randul i din matrice are cel putin un element; 1 daca e complet liber;
Functia compl1() cauta doua randuri consecutive libere (complet).
Daca numarul de linii al matricii e par, patratul de 2/2 nu poate avea coltul stanga sus pe o linie impara (e doar o observatie: daca se strica la un momendat ordinea in matrice, se creeaza spatii libere ce nu vor mai putea fi umplute==> nu mai gasesc solutia optima); daca numarul de linii e impar, patratul poate fi asezat oricum (oricum vor ramane spatii libere).
Functia compl2(), parcurge matricea si completeaza oriunde gaseste un spatiu de 2/2 liber;
Aplic acelas principiu si de jos in sus(completez cu compl2()si ijn oridinea de jos in sus);
Afisez numarul mai mare dintre cele doua solutii posibile(cel rezultat din prima parcurgere, si resp cel rez din cea de-a doua)
 :? Cam asta e rezolvarea mea...


Titlul: Răspuns: 019 Pavare
Scris de: Savin Tiberiu din Aprilie 20, 2008, 20:30:58
Pai ce pot sa zic.. nu prea e bine :D.

Problema se rezolva cu dinamica pe stari (una din coordonate e mai mica decat 15 park). Citeste ce s-a mai scris pe acest topic, o sa gasesti mai multe sfaturi.


Titlul: Răspuns: 019 Pavare
Scris de: Bogdan-Alexandru Stoica din Aprilie 20, 2008, 21:42:17
daca am inteles bine ce face comp1(), atunci ar trebui sa pice testul (patratele marcate cu 1 sunt patratele blocate):
0000            22222
0000    =>    22222
1100            1122
1100            1122

oricum, daca pe ala nu pica prima functie, sigur pe testul asta pica comp2(), deci iti pica tot programul:

10001              10221
00001              22221
00001     =>     22111
00001              00221
10001              10221
                                             


Titlul: Răspuns: 019 Pavare
Scris de: Savin Tiberiu din Aprilie 20, 2008, 22:10:59
varule, ca sa ii pice tot programul trebuie sa ii pice ambele functii. Din ce am inteles eu a aplicat 2 greedyuri si ia solutia cea mai convenabila dintre cele 2. O abordare destul de buna uneori :-' poate chiar mai bine decat sa bagi solutia oficiala si sa o busesti :D


Titlul: Răspuns: 019 Pavare
Scris de: Posea Elena din Aprilie 21, 2008, 08:41:40
Ar fi mai bine sa incerc sa imbunatatesc (eventual sa refac) algoritmul pe aceeas idee, sau sa incerc metoda cu backtracking si programare dinamica?(back stiu, programare dinamica, nu)...puteti sa-mi spuneti cateva probleme mai usoare la care se foloseste cam aceeas idee? Multumesc! :D


Titlul: Răspuns: 019 Pavare
Scris de: Savin Tiberiu din Aprilie 21, 2008, 09:40:50
Daca nu stii programare dinamica te sfatuiesc sa lasi ptr moment problema asta. Poti sa incerci urmatoarele probleme

http://infoarena/problema/energii (http://infoarena.ro/problema/energii)
http://infoarena/problema/homm (http://infoarena.ro/problema/homm)
http://infoarena/problema/asmax (http://infoarena.ro/problema/asmax)
http://infoarena/problema/calatorie (http://infoarena.ro/problema/calatorie)
http://infoarena/problema/subsir2 (http://infoarena.ro/problema/subsir2)
http://infoarena/problema/iepuri2 (http://infoarena.ro/problema/iepuri2)


Titlul: Răspuns: 019 Pavare
Scris de: Bogdan-Alexandru Stoica din Aprilie 21, 2008, 11:50:46
varule, ca sa ii pice tot programul trebuie sa ii pice ambele functii. Din ce am inteles eu a aplicat 2 greedyuri si ia solutia cea mai convenabila dintre cele 2. O abordare destul de buna uneori :-' poate chiar mai bine decat sa bagi solutia oficiala si sa o busesti :D

adevarat varule, dar pe al doilea test nu intra in comp1().

[...]
Functia compl1() cauta doua randuri consecutive libere (complet).
[...]


Titlul: Răspuns: 019 Pavare
Scris de: Posea Elena din Aprilie 21, 2008, 14:35:47
Pe "energii" o stiu deja, am mai incercat-o...Multumesc pentru sfaturi! :D


Titlul: Răspuns: 019 Pavare
Scris de: Adrian Budau din Septembrie 12, 2009, 17:34:58
Se pare ca problema asta se poate rezolva si in O(n*m*fibonnaci(m)) pt cei care cauta alte moduri de a o optimiza(numai fibbonaci(m) cazuri merita calculate din 2^m)


Titlul: Răspuns: 019 Pavare
Scris de: Andrei Misarca din Octombrie 18, 2009, 11:13:15
Cred că ar fi binevenit un test cu dimensiuni maxime si foarte putine bucăți bune, întrucât se poate lua 100 si cu complexitatea teoretică de O(4M*N).


Titlul: Răspuns: 019 Pavare
Scris de: Paul-Dan Baltescu din Octombrie 19, 2009, 07:48:06
Cred ca asta era ideea problemei de la inceput. :)

Tu ai facut in complexitate mai buna?


Titlul: Răspuns: 019 Pavare
Scris de: Andrei Misarca din Octombrie 19, 2009, 17:38:17
Am făcut în O(2M*N*M), și din ce văd pe forum, cam asta se cere :)
Solutia oficiala este O(N*M*2^M) .. totusi s-a luat 100 si cu solutii mai putin eficiente.. in loc sa faci dinamica pe stari linie cu linie, mai bine se face element cu element (vezi solutia de la CEOI 2002 - Bugs).


Titlul: Răspuns: 019 Pavare
Scris de: Mihai-Alexandru Dusmanu din Iunie 05, 2011, 14:34:01
aveti cumva vreo idee daca O(N * M * 2 M) mai intra in timp? Ca eu tot incerc sa optimizez si nu prea imi iese...

Legat de solutia O(N * M * Fibonacci (M))  stiti cumva vreun articol / ceva de genul?


Titlul: Răspuns: 019 Pavare
Scris de: Paul-Dan Baltescu din Iunie 05, 2011, 14:41:27
Testele nu au fost schimbate. Si tin minte ca am rezolvat problema cu o solutie avand complexitatea O(N*M*22M) (supraestimat).

Cred ca mai mult ca sigur o solutie avand complexitatea O(N*M*2M) s-ar incadra in timp. Esti sigur insa ca asta e complexitatea solutiei tale?


Titlul: Răspuns: 019 Pavare
Scris de: Mihai-Alexandru Dusmanu din Iunie 05, 2011, 14:48:18
Sunt destul de sigur.. adica am dinamica a[ i ][ j ][ k ] = pozitia i,j cu configuratia k ( 0 <= k <= (2m - 1) ). Si pentru fiecare triplet (i, j, k) vad in o(1) in ce alte triplete  pot sa ma duc( sunt maxim 2 triplete in care pot ajunge).


Titlul: Răspuns: 019 Pavare
Scris de: Oncescu Costin din Mai 13, 2012, 17:03:17
Mie imi da bine pe mabele teste postate inainte dar tot iau 0 imi mai poate propune cineva niste teste.Multumesc anticipat.


Titlul: Răspuns: 019 Pavare
Scris de: Oncescu Costin din Mai 13, 2012, 17:25:50
Nu imi mai trebuie am luat 100 :yahoo: nu am luat in calcul ca pot sa existe linii intregi pe care nu poti sa pui nici un bloc
de ex

****
****
|*|*
*|*|
****
****
cu | am marcat zona stricata


Titlul: Răspuns: 019 Pavare
Scris de: Andrei Stanciu din Martie 06, 2013, 21:07:05
Un test micut imi puteti da si mie, va rog?


Titlul: Răspuns: 019 Pavare
Scris de: Loredana Vamanu din Octombrie 27, 2013, 00:44:43
Am intampinat o problema la evaluare. Cand trimit problema primesc pe borderou urmatorul mesaj:
Contactează autorul problemei: Evaluatorul nu a returnat un număr la stdout pe testul 1 (se ignoră spaţii, newline, etc)

Poate fi din cauza sursei mele sau este o problema cu testele?



Titlul: Răspuns: 019 Pavare
Scris de: Kurt Godel din Ianuarie 04, 2015, 18:10:44
Ar trebuie o solutie in O(4^M*N) sa mearga? Eu am facut o dinamica cu back pe fiecare linie, si tineam starea liniei anterioare. Ce-i drept, am facut-o intr-un mod mai "destept", facand dinamica "inainte", un fel de parcurgere BFS. A trecut cu 24 de ms pe ultimul test, cu mult mai repede decat solutiile in O(2^N*N*M). Totusi ma intreb care e logica solutiei oficiale optime?

Edit: Dupa o analiza mai atenta, am observat ca complexitatea algoritmului e mai apropiata de O(2^M*fib(M)*N).


Titlul: Răspuns: 019 Pavare
Scris de: Pirtoaca George Sebastian din August 28, 2018, 07:26:46
Ar merge marita putin limita de timp. O solutie cu O(2^M * N * M) ia TLE daca nu e optimizata.