Posts

Showing posts with the label reflection

CP journey update on 11 Oct 2019

I have been away from Competitive Programming for a long time (about 2 years). No, not because I lost interest in it. I was simply too busy with university coursework. This break was also beneficial in another way - I realized that there are so many things that are much more valuable and important in Computer Science than Competitive Programming. Competitive Programming, while fun as a hobby, does not have much practical use in most real-world applications. My reasons for saying this are as follows: Many real-world problems are NP-hard (i.e. do not have efficient solutions) and it is more practical to solve such problems by approximation rather than computing an exact solution. However, in Programming Competitions, most of the time, we are given problems that have known efficient solutions and the results simply depend on who can discover and implement the solution the fastest. In the real-world, we need the patience and resilience to try different approaches to problems for whi...

My direction in Competitive Programming

Having carefully-developed a well-tested template for programming contests, I am currently looking for ways and means to improve my speed and accuracy in contests. The latter can only be improved through more experience and faster typing speed. In order to fix my slow typing speed, I have learnt touch-typing - my typing speed has increased from an average of 40+wpm to 75 wpm ever since. My extensive list of programming macros also puts less emphasis on my typing speed. As for problem-solving speed, I have to admit that the author of "Competitive Programming" is right - use the simplest solution that works. Who cares if it is not the most efficient solution? What matters is the "accepted" status. Hence, I am now working in that direction - to write solutions that just make the cut and are easy to implement. An additional effort that I have made over the past year is to develop a well-documented code library of common data structures and algorithms that I would ne...

Efficient learning in Competitive Programming

Many competitive programmers (myself included) often face difficult problems that we cannot solve for days on end. This is normal because no one knows everything. But I feel that spending many hours trying to crack a single problem is a waste of time and stems learning. If we cannot solve a particular problem, it could probably be due to the lack of one or more specific skills and/or concepts. For example, how would a beginner programmer know how to use dynamic programming? He or she would not even know that the question requires dynamic programming. As a former beginner, I can emphatize with those sentiments. When I first embarked on my Competitive Programming journey, I could spend an entire day working on a single problem, which turned out to be very trivial after using a few simple tricks. As such, it is imperative to read editorials and other AC (accepted) solutions rather than trying to "challenge ourselves". Learning from others will help prevent us from reinventin...