A
A
Artem2014-01-01 17:15:45
Programming
Artem, 2014-01-01 17:15:45

How to prepare yourself for programming olympiad?

As they say "lulz for" a couple of months ago I decided to participate in the school Olympiad in Informatics, quite simply passed to the city stage. To my surprise, I won there, and now in a month I'm going to the edge. Actually, everything would be fine, but I have NEVER been involved in Olympiad programming, I have not participated in Olympiads, I don’t know patterns, I don’t know algorithms, I write code that works, but smells bad. Since few people like to fall face down (I am no exception), you need to prepare, and this is the essence of the matter. How to raise a skill in a month in such a way as to take a prize? Well, at least not the last one.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
Alexander Belov, 2014-01-01
@weend

View these topics:
Long arithmetic
Dynamic programming
Graph theory
Recursion, iteration
Sorting and sequences
Combinatorics
Simple mathematics
Geometry
Integer arithmetic
Mathematical modeling
Greedy algorithm
Data structures Two-
dimensional arrays

Read about them, analyze each one. A month is too little for preparation, but if you have a school Olympiad, then nothing else.
acmp.ru acm.timus.ru
Codeforces
This
is veryuseful resources (checking systems), which include very interesting and difficult problems, just designed for programming competitions.
Check it out here:
Olympiad programming for beginners
The set of programming languages ​​in each system is different. Here are some of them:
A set of japs ​​for thymus
For acmp.ru
But first, read and understand these resources / books about algorithms:
algolist.manual.ru
Kormen T., Leyzerson Ch., Rivest R., Stein K. - Alg..
And of course, pull up the math . You won't get far without math.
Answer to your question: Java would be suitable for long arithmetic.

D
denispalchuk, 2014-01-02
@denispalchuk

Agree with previous statements. I chose the pros for myself, because the language is fast and flexible. After school, the teacher quickly showed what to do:
1. Learn C (after Pascal, it will not be difficult to learn the syntax of the language, I think it will take no more than a week with full awareness). You will also learn about recursion
there 2. Learn C++ (General idea of ​​classes, templates)
3. Learn STL, at the same time learning data structures (queue, stack, lists, etc.)
Studying the intricacies of the programming language is over. And then you get it purely on topics. Based on my personal experience, I would advise you to learn in this order:
-Graphs
-Dynamic programming
-Long arithmetic
-Combinatorics + Greedy
Well, then the rest from the list above

A
Artem Kalachyan, 2014-01-01
@Bringoff

At one time there was something similar. Only in the Ukrainian version of the name are others - school, district, regional, all-Ukrainian.
At school, apart from me, virtually no one knew programming; for some reason, even the basics of any language were removed at computer science lessons in those years. Yes, and then I knew only a little Pascal / Delphi. But there was no better option, so I went (for decency, I still solved all the problems at school). The district stage passed calmly (there were four people who also did not understand how they got there - one girl left after 20 minutes). I have already prepared for the regional stage. I didn't have a special system - I just solved problems on acmp.ru, acm.timus.ru. If necessary, I googled the necessary algorithm and tried to understand its implementation. I helped with tasks on one forum, sometimes I asked myself. As a result, after about 2 months of such preparation, I took second place) I scored 69 points out of 100 (I solved 2 problems completely, 2 partially). Recently I talked with my teacher - he says that they still remember me (like some guy from the province came and took a prize from local lyceum students). But, to be honest, I'm not too happy with my result, 2 months for preparation is not enough. Yes, and it was necessary to prepare more systematically.
What I would definitely change - I would not write in Pascal :) Now I would choose Java. Recently I returned to some tasks on acmp.ru - those tasks where it was necessary to dodge in Pascal were solved elementarily in Java. For example, it was not necessary to implement long arithmetic. Someone said that you can often run into Time Limit, but, frankly, this is a so-so argument - for most tasks, the specified time limit for Java is more than enough. The notorious Petr Mitrichev uses it in competitions and has been showing results for so many years.
Yes, we didn’t have a python in the testing system at the Olympiad. Theoretically, you could write on it on your computer, it would then be checked manually. But without access to the testing system, no one dared to solve problems in this way.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question