On Saturday, April 18, 2015 at 11:20:55 PM UTC+3, Неугомонный wrote:
> Hi, this must've been already asked here but I couldn't find any links, 
> please refer to existing post if I'm repeating someone's question.
> 
> What is the best way to prepare for this challenge? Just your thoughts in few 
> words, I'm not asking for anything special.
> 
> This is the first time i participate in competition and I feel I have enough 
> brain power left to at least qualify for Round 2 but....
> 
> My today's epic failure to pass Round1 was a second alarm (first one was the 
> qualification round where I spent too much time solving the pancake task) 
> that I don't have sufficient experience in this kind of assignment. 
> 
> Today I had a solution for A within minutes but made a silly mistake and end 
> up spending lots of time debugging - I got it right eventually and I was 
> still within the 50 minute per task so not too bad.
> 
> Then I jumped to second task and panicking and ended implementing brute force 
> solution without seeing that N can be 10 to power of 9 - you can guess the 
> result...
> 
> I regrouped and somehow my brain suggested a solution which was correct but 
> yet again I made a mistake of ignoring the rounding and ended up debugging, 
> till the very end of time limit. (I then solved it correctly within minutes 
> sitting on a sh*****). Pathetic!
> 
> So, please, tell me how do you prepare for this. I am making plans for next 
> year. I will never be even remotely close to winning this competition (cudos 
> to Burunduk1 - респект чувак!) but I feel I could do Round1 on first go
> 
> Thank
> 
> Neugomonney


Practicing is definitely the way to do it.
You can try out GCJ questions from previous years, but participating this year 
will definitely be beneficial for next times. That's just the way it goes...
For instance, you implemented a solution which could not be executed in 
reasonable time for the big input. Such a mistake happens to everyone, but you 
can be sure that next time you participate it will probably not happen to you 
(if you know how to analyze/estimate running time of algorithms).

Also, after participating - be sure to read the analysis once it is published. 
You might get good new ideas from there.
For instance, I once encountered a problem in GCJ where I couldn't find some 
value of computation in reasonable time. Later I read the analysis and found 
out it could be found using binary search. This idea was not really new to me, 
but I never used binary search before to find results of computations. Always 
used it on arrays. So - this is just a simple way that I've learned a new 
simple trick. Since then, I've used this exact trick on two other GCJ problems. 
Some tricks you learn by participating and you cannot forget them.

Also, while participating you develop you own methods for specifically handling 
GCJ problems and you might create a folder with some already written code. I 
already have some code skeletons which I use for every problem. You might also 
get more familiar and experienced with the coding language of your choice.
For instance, I prefer to use python. And if you look at codes I have submitted 
you might notice that I have a pre-coded skeleton designed to handle all input 
and output of the GCJ problems IO. Meaning, I never even have to type the name 
of the files. Everything is already done for me, I just have to fill the 
details of a function to handle ONE SINGLE CASE. The rest is already wrapped.
You might see other competitors act the same (although not everyone likes it or 
even need it. Some people are just ninjas and can handle all IO issues by the 
time I finish to read the problem). I have some more code for wrapping 
functions with extra functionality (like memoization or pre-processing and 
stuff...). And I also have pre-saved code for doing other stuff like specific 
searches on sorted lists, arithmetic computations on permutations, some 
combinatorial methods and more. 
But don't worry about it. In time, You might develop your own 
skeletons/wrappers and stuff. You will learn for yourself which snippets of 
code you want to have in advance for quicker access in competition real time. 
You'll just grow into it with all the code that you want available and which is 
relevant and useful for you.

Finally, and this is some hard stuff for the advanced rounds - if you are 
running out time, be sure to check the scoreboard sometimes and develop a 
strategy for passing to the next round. If you know that only the first 1000 
participants pass, you might want to look and estimate how many points will you 
need in order to be in the first 1000. This can be quite stressful, but you 
might get a good idea on which problems to solve next. You might realize that 
solving the easy question will not be enough, and you need to solve a harder 
one. You might realize that you cannot solve the big input in the remaining 
time, but you sure need to brute force the small input in order to pass. Or 
vice versa - you might see that brute forcing the small input will not be 
enough. so you will dedicate the remaining time in order to find a clever 
solution that might solve both the small and the big inputs.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/1fdb6eb1-7715-40d7-b40e-37ede6b6550c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to