archive

Versenyprogramozás - 2022

2022-09-01 - VProg Student Club - Fall 2022

The competitive programming (ACM ICPC, Google Code Jam, Codeforces, etc) study groups are continued this semester, organized by BME VIK SZIT!

Coordinates

The study group is open to everyone: beginners and advanced students, students from other universities, and others outside of the university are also welcomed. :)

Viktória Nemkin [email protected]

2022-10-03 - ICPC 2022 Registration

Coordinates

Registration

Teams should consist of 3 people, all students at BME. Registration is via email.

The competition will be preceded by a test, we ask all BME teams to attend this. During this, you can try the submission system and ask for help when needed.

The start of the test is unknown, the competition starts at 10 am and lasts 5 hours. Further information, rules and technical details can be found at ELTE’s website: http://versenyek.inf.elte.hu/.

The Central European round will be held between 2022 November 25-27 in Ljubljana, Slovenia. The two best BME teams in the 1st round will be eligible to participate.

Only teams in which all three members fulfill the ACM ICPC eligibility criteria will be able to advance to the 2nd round. In short, members must have been born in or after 1999 or must have started university in or after 2018.

See the official Eligibility Decision Tree from last year.

Further information about CERC: https://cerc.acm.si

Szakköri anyagok

Feladatok és megoldások

Folyamok

Hálózat és folyam

Példák

Amikre ez a modell passzol:

Hálózat

$G(V,E)$ irányított (nem-negatív) élsúlyozott gráf.

Network

Folyam

Élekhez számok (folyamértékek) hozzárendelése $f: E \rightarrow \mathbb{R}_{\geq{}0}$ folyamfüggvény.

Úgy hogy:

\[0\leq{} f(e) \leq{}c(e)\] \[\sum\limits_{\forall{}\xrightarrow{e}v} f(e) = \sum\limits_{\forall{}\xleftarrow{e}v} f(e)\] \[\sum\limits_{\forall{}\xleftarrow{e}s} f(e) = \sum\limits_{\forall{}\xrightarrow{e}t} f(e)\]

Flow

Folyam értéke

Amennyi “dolog” “átment” a source-ból a target-ba.

Feladatok

Maximális folyam

Mekkora a rendszeren átvihető legnagyobb “mennyiség”?

Minimális vágás

Tételek

Maximális folyam = minimális vágás tétel

“Bottleneck”: A maximális folyam értéke egyezik a minimális vágás kapacitásával.

Algoritmusok

Ford-Fulkerson “módszer”

Csupa 0 folyam: 01.png

S-t útvonal, amin a bottleneck a B->A, 3-mas kapacitású él: 02.png

Bővítjük a folyamot az élek mentén 3-mal: 03.png

S-t útvonal, amin a bottleneck a maradék 2 kapacitás az A-T élen: 04.png

Bővítjük a folyamot az élek mentén 2-vel: 05.png

S-t útvonal, amin a bottleneck a maradék 1 kapacitás az S-B élen: 06.png

Bővítjük a folyamot az élek mentén 1-el: 07.png

Probléma: 08.png

Lila élek: annyi kapacitással amennyit az eredeti folyam elhasznált. 09.png

Ezen a ponton a fehér éleken elég a “maradék” kapacitásokat tárolni, az eddigi f/c számok helyett a c-f értéket: 10.png

Sárga élek: mennyi kapacitást lehet még elhasználni. Lila élek: mennyi elhasznált kapacitást lehet visszavonni. = Minden lehetséges változtatás az aktuális folyamunkon! 11.png

Az átláthatóság kedvéért a 0 kapacitású éleket ne ábrázoljuk: 12.png

Ekkor már látszik is az új javító út, ami a B-A élet visszavonja: 13.png

Frissítjük a maradék hálózatot: 14.png

Vágás kapacitása = folyam értéke. Készen vagyunk, nincs S-T út. 15.png

https://youtu.be/LdOnanfc5TM

Edmonds-Karp

https://youtu.be/RppuJYwlcI8 https://cp-algorithms.com/graph/edmonds_karp.html

Dinic

Ezt ismételgeti amíg a BFS-el elérhető a source-ból a target.

https://youtu.be/M6cm8UeeziI https://codeforces.com/blog/entry/104960 https://cp-algorithms.com/graph/dinic.html

Megjegyzések

EgÉr lemma

Maximális párosítás keresése folyammal

A páros gráfban maximális párosítás keresése feladat: bipartite_matching.png

Is megoldható folyammal: bipartite_matching_with_flow.png

Általánosítás

Irányítatlan gráfok

Csúcskapacitások

Több source/target

Segédprogramok