Tackling tricky problems

Правка en4, от VastoLorde95, 2015-06-18 11:19:21

Hi, I am sure we have all come across those problems that have these simple problem statements but are just diabolical to get right. Problems which give you moments like these

These problems are usually hard to get right for the following reasons:

  1. Corner test cases
  2. Tricky implementation

Typically problems which involve string manipulation, geometry or problems involving decimal precision are hard to get right in the first go without overlooking some minute details. Sometimes these problems require carefully breaking it up into cases.

Recently I solved the following problem and had 4 failed attempts before finally getting it right. In a competition, you might spend a ton of time trying to identify your bugs and that can make or break your final rank in the contest.

So here is what I want to ask the top programmers in the community -

Q. How do you approach such problems during live contests? I have seen many top programmers getting AC on such problems in the first try. (Usually their code is short, simple and consistent with the cases)

A. mkirsche Spend a lot of time thinking before starting to code, and don't take too many shortcuts (longer code is sometimes better if it's cleaner and easier for you to keep track of). I don't know what to tell you about precision — I have problems with that too.

A. Junior94 They're experienced, they've probably failed many times and know what works best and what doesn't.

Q. How do you test your code to ensure that you have not missed any corner test case?

A. Junior94 You can't know for sure if your code is 100 % correct until the final system testing but you can still write stress tests with brute force solutions.

Q. In case the implementation is long and taxing, what is your approach to keep the code neat and simple?

A. Junior94 Think before coding. Also usually the more time you spent thinking about the problem the better your solution will be (thinking in the right track of course). Experience helps a lot here.

Q. How much time do you invest in such problems before deciding they are too risky to solve in a live contest?

A. Junior94 Is the code going to be too long or complicated to write for the remaining time? Are there any easier looking problems remaining to solve? Is it too frustrating? There are a lot of questions you can ask yourself at this point but whether you keep working on it or move on it will be a risk you'll have to take.


Теги implementation, codeforces, corner, case


  Rev. Язык Кто Когда Δ Комментарий
en4 Английский VastoLorde95 2015-06-18 11:19:21 1199
en3 Английский VastoLorde95 2015-06-17 22:25:14 112
en2 Английский VastoLorde95 2015-06-17 22:20:40 8 Tiny change: 'these:\n![ ](http://i' -
en1 Английский VastoLorde95 2015-06-17 22:18:41 1385 Initial revision (published)