Training Camp Argentina 2015

We were still babies at programming, to be honest. But the USB had competed in the Marrakech World Finals 2015 (Team Phoenix); there, the awesome guys from Argentina invited Venezuela to a Training Camp they had been running annually for 6 years. Yet, Team Phoenix couldn’t go, as two out of three of its members had graduated.

Venezuela could send two teams, and it was decided that one should be from the USB, so Ricardo chose us, RAM, to go to fucking Argentina.

Home Pre-Training

The whole idea intimidated us. We had never even participated in a real ICPC contest (local, regional or else), much less assisted such a camp, or gone to Argentina, for that matter. The idea of a previous training, taught in our home university, was welcomed.

The main “teacher” was Ricardo, our coach, but other classes were given by Rubmary (teammate) and Wilmer Bandres (Marrakech finalist), as well. They were open classes for anyone who wanted to go, so there were usually around 7 to 10 people.

The necessary fundraising

Venezuela is going, as I write this, through a political, social and economic crisis that makes everything related to travels, among other million things, almost impossible: We had no money for it. We had to fly some miles to get there, so we asked for help. All this during the trimester and pre-training up until the end.

It was tough, but we somehow managed to arrange everything after lots of people (mostly family, but also friends and a couple of strangers) helped by donating or sharing our story. We finally got the money, and in a couple of stressful days, we organized the trip to Bahía Blanca, Argentina.

Two weeks of intensive training

  • Lectures all weekday mornings.
  • Simulations all weekday afternoons.
  • A few minor events related to the sponsors:
    • Google - Maps and internships open to all.
    • Facebook - Mobile version/Network and internships open to… the best.
    • Medallia - Networking awesomeness and internships open.
  • Saturday codeforces because we weren’t tired enough.

We learned a lot, a freaking lot, then and months after, digesting all that information. This was a major help for us at the regionals when we classified to the World Finals.

Topics treated in classes

Be sure to expand every item to see specific topics.

Graphs
  • DFS / BFS.
  • Shortest paths
  • Minimum Spanning Trees
    • Kruskal
    • Prim
    </li>
    <li>Strongly Connected Components 
      <ul>
        <li>Kosaraju</li>
        <li>SAT-2</li>
      </ul>
    </li>
    <li>DFS edge classification</li>
    <li>Topological Sorting</li>
    <li>Articulation Points</li>
    <li><strong>Intractable Problems</strong>
      <ul>
        <li><strong>Cliques</strong></li>
        <li><strong>Independent sets</strong></li>
        <li><strong>Vertex Cover</strong></li>
      </ul>
    </li>
    <li>Trees 
      <ul><li>Centroid decomposition</li></ul>
    </li>
Dynamic Programming
  • Top-down
  • Bottom-up
  • Overlapping subproblems
  • Principle of Optimality
  • Range DP
  • Bitmasking
Arithmetics
  • Prime numbers
  • Factorization
  • Euler’s Totient
  • Modular arithmetics
    • Euclidean algorithm (+ Extension)
    • Chinese Remainder Theorem
    </li>
    <li>Matrixes 
      <ul>
        <li>Graphs</li>
        <li>Markov’s Chains</li>
        <li>System of equations</li>
        <li>Gauss-Jordan</li>
      </ul>
    </li>
    <li>FFT 
      <ul><li>You know, the usual dark magic</li></ul>
    </li>
Data Structures
  • C++ sets
  • <li>Range Minimum Query 
      <ul>
        <li>Sparse tables (static)</li>
        <li>Segment trees (dynamic) 
          <ul>
            <li>Lazy propagation</li>
            <li>Persistence</li>
          </ul>
        </li>
        <li>Lowest Common Ancestor</li>
      </ul>
    </li>
    <li>Interval operations 
      <ul>
        <li>Sums 
          <ul>
            <li>Partial sums (static)</li>
            <li>Binary Indexed Trees (dynamic)</li>
          </ul>
        </li>
        <li>Others 
          <ul>
            <li>“Square root trick”</li>
          </ul>
        </li>
      </ul>
    </li>
Greedy problem solving
  • Try to prove your stuff
Strings
  • String matching
    • Knuth-Morris-Pratt
    </li>
    <li>Tries</li>
    <li>Suffix Array 
      <ul>
        <li>Longest Common Prefix</li>
      </ul>
    </li>
Geometry
  • Elements
    • Points
    • Vectors
    • Lines
    </li>
    <li>Sweep Line 
      <ul>
        <li>Closest pair</li>
        <li>Segment intersection</li>
        <li>Convex Hull</li>
      </ul>
    </li>
    <li>Polygon area</li>
Game Theory
  • Winner and loser positions
  • Nim

You can check the official website for Training Camp Argentina 2015 (in Spanish).

Training Camp Venezuela

Something we agreed on commit to before going to Argentina was to share all we learned in Argentina with Venezuelan competitors. We had then (and still have) a lack of competitors and trainers, due to Venezuela’s long lasting (bad and getting worse) condition for the most part, as academic life struggles, so we all want and need to promote these competitions by training others.

We resorted to doing some kind of training camp. It had a totally different format, attending to Venezuela’s insecurity and current state of the State Universities; these universities depend economically on the government, and with Maduro’s administration, we were suffering a professors strike at that time thanks to a critical lack of necessary conditions. Certainly chaotic times but we did it anyway.

The format was like this: Lectures on Friday and Saturday mornings in the Universidad Central de Venezuela (UCV) (which is an easier place go to for most students) by the UCV team that went with us to Argentina and ourselves. We covered the same topics we were lectured on.

They got a pretty big set of topics in Argentina, but with such a little time as two weeks, not everything can be taught. We tried to cover a little more than them by including maximum flow algorithms as the last class.

I got to give the second lecture on graphs. I covered BFS, Shortest Paths, Minimum Spanning Trees, “quirky” graphs and a few intractable problems.

Our goal is to continue this pseudo-camp on a yearly basis, to keep on promoting the competitions. We hope to get sponsors eventually, to provide a better service for all.