Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Competitive Programming

Competitive Programming

My experience with competitive programming, and how it has helped me become a better developer.

Simon Hørup Eskildsen

May 14, 2012
Tweet

More Decks by Simon Hørup Eskildsen

Other Decks in Programming

Transcript

  1. Terning PROBLEM På en normal terning er summen af øjne

    på to mod- stående sider altid 7. Dette gælder ikke for de terninger, vi har i denne opgave, men ellers ligner de almindelige terninger. Det gælder om at stable et antal terninger oven på hinanden i en høj firkantet søjle. Nederst placeres terning nummer 1, og den kan orienteres valgfrit. Oven på denne placeres terning nummer 2, således at siden, der vender op på terning nummer 1, har samme antal øjne som siden, der vender nedad på terning nummer 2. Oven på nummer 2 placeres nummer 3 efter samme princip og så fremdeles. To terninger placeret oven på hinanden skal altså have det samme antal øjne på de sider, der støder op til hinanden. Når en sådan søjle er bygget, kan man rotere de enkelte terninger ¼ , ½ eller ¾ omgang. Det gælder nu om at finde en opstilling, hvor én af siderne i søjlen har så stor sum af øjne som muligt. OPGAVE Skriv et program, som • fra input-filen, terning.in, indlæser antallet af terninger og en beskrivelse af dem, • beregner den størst mulige sum af øjne for en side, • skriver resultatet til output-filen, terning.out. INPUT Input læses fra standard-input og består af et antal linjer: • Første linje indeholder et heltal, N, der angiver antallet af terninger (1 ≤ N ≤ 10 000). • De næste N linjer indeholder en beskrivelse af en terning bestående af 6 heltal A, B, C, D, E, F adskilt af et enkelt mellemrum. Disse heltal beskriver antallet af øjne på de enkelte sider, som illustreret ved følgende figur: OUTPUT Output skal skrives til standard-output og skal bestå af et enkelt heltal, der angiver den størst mulige sum af øjne for en side. EKSEMPLER input output 5 29 2 3 1 6 5 4 3 1 2 4 6 5 5 6 4 1 3 2 1 3 6 2 4 5 4 1 6 5 2 3 Nedenfor er vist, hvordan terningerne kan stables og orienteres, så den største sum for en side bliver 29. DDD12-1 TERNING Side 1 af 1 Monday, May 14, 12
  2. BFS DFS Dijkstra’s Floyd-Warshall Segment tree Dynamic programming Black-Red-Trees Binary

    search A* Stack Queue Priority queue Quicksort Mergesort Topological sorting Divide and conquer Linked list Hash tables Greedy Fibonacci heaps Van Embde Boas Trees Disjoint sets Minimum spanning trees Bellman-Ford Johnson’s algorithm The Ford Fulkerson method Bipartite graphs Matrix operations Computational geometry Graph coloring Flood-fill Recursion Backtracking Suffix trees Tries Eulerian cycle Adjadency lists Hamiltonian cycle Range tree Compression Minkowski sum Sets Splay tree Kruskal’s Monday, May 14, 12
  3. BFS DFS Dijkstra’s Floyd-Warshall Segment tree Dynamic programming Black-Red-Trees Binary

    search A* Stack Queue Priority queue Quicksort Mergesort Topological sorting Divide and conquer Linked list Hash tables Greedy Fibonacci heaps Van Embde Boas Trees Disjoint sets Minimum spanning trees Bellman-Ford Johnson’s algorithm The Ford Fulkerson method Bipartite graphs Matrix operations Computational geometry Graph coloring Flood-fill Recursion Backtracking Suffix trees Tries Eulerian cycle Adjadency lists Hamiltonian cycle Range tree Compression Minkowski sum Sets Splay tree Kruskal’s Monday, May 14, 12
  4. Mobile Den kendte mobilnetværksoperatør, Totalphone, har opsat et antal nye

    telefonmaster for at dække en nybygget motorvej med netværk. Programmørerne i Totalphone har som altid været sløsede, og derfor kan transmissions-styrken ikke sættes individuelt for hver telefonmast, men alle telefonmasterne skal sende med samme styrke. For at minimere strømforbruget vil firmaet vide: Hvad er den maksimale afstand fra et punkt på motorvejen til den nærmeste telefonmast. Altså: For hvert sted på motorvejen kan man finde afstanden til den nærmeste telefonmast. Hvad er den maksimale af disse afstande? Input data Den første linje i tekstfilen mobile.in består af to heltal N(1   ≤   N   ≤   106) og L(1  ≤  L  ≤  109), der repræsenterer henholdsvis antallet af telefonmaster og længden af motorvejen. Herefter følger N linjer, der hver består af to heltal xi , yi (-109 ≤ xi ,yi ≤ 109), der beskriver koordinaterne for en telefonmast. Alle punkter er forskellige. Koordinaterne er sorteret i ikke-faldende rækkefølge med hensyn til x- koordinaterne. Hvis to x-værdier er de samme, er koordinaterne sorteret mht. y- koordinaterne i stigende rækkefølge. Motorvejen er en ret linje fra (0; 0) til (L; 0). Output data Den første og eneste linje i tekstfilen mobile.out skal indeholde et enkelt heltal: Den maksimale afstand fra et punkt på motorvejen til den nærmeste telefonmast. Dit output vil blive betragtet for korrekt, hvis det afviger med højst 10-3 fra det rigtige svar. Eksempel Input data (file mobile.in) Output data (file mobile.out) 2 10 0 0 11 1 5.545455 Grading Der gives 25 point for testsæt hvor N≤5000. Der gives 50 point for testsæt hvor N≤100000. Advarsel Brug mindst double præcisions tal i jeres udregninger, da mindre typer muligvis ikke giver den nødvendige præcision. Monday, May 14, 12