"Where do I start?" "How do I get better?"
Stuck here?
Don't worry, here is a guide that will help you answer these questions .
"Where do I start?"
Step 0: Prerequisites: Determination / Dedication.
Step 1: Choosing your language. Which: The language should be preferably C++ or Java, the last preference should be Python (due to its unavailability on many official coding platforms, e.g., the ACM ICPC).
We will focus on C++, Java is slow, but more importantly lacks shorthand generic implementations of standard templates (one big advantage of Java is Big Integers, which we will see later)
Why: Java, C++, Python have libraries that would cut the time to write the code, as well as increase the efficiency most of the times. Example: sort(a,a+n); //in C++ would sort the array of n elements in O(nlogn) time. It is both simpler to implement and more efficient than the O(n^2) sorts.
If you know C, it is very easy to switch to C++. With almost no effort, you can use very powerful libraries.
Step 2: Learn the Language? I would recommend practicing problems, as many as you can, you'll be able to learn stuff as the need arises.
Step 3: Where? What if I'm stuck? Too much stuff all around and I'm freaking out. :O :( Google is a source that you would rely on most of the time. But if you didn’t understand something on google or you want to discuss a topic with someone or clear doubts, you are always free to ping someone Someone will definitely reply.
Step 4: Okay, I'm ready, tell me where to start. https://www.hackerrank.com/ https://www.hackerearth.com/practice/codemonk/
Doing till the "Sorting" part is recommended before you try an Online judge like Codeforces.
Then switch over to a better Online Competitive Platform http://codeforces.me/
It is a platform where regular contests are held and everyone has ratings.
Here is a link for all the problems, sorted by submission. Usually, greater the number of problem submissions, easier is the problem. http://codeforces.me/problemset?order=BY_SOLVED_DESC
Try finishing the first 3-4 pages of this^ to get a hang of competitive coding.
Start from square 1, build up your confidence, start from the most solved, and keep going. Generally, 'A' problems would be the easiest, followed by B, C, and D .
P.S. Remember, you're in Div2. Look for the Division, Div1 As are equivalent to Div2 C’s. you might end up doing a very difficult A problem :P
As a newbie, you should never care about rating because that is your biggest barrier in trying harder and trying problems out of your comfort zone during a competition. Even if your rating is going down, it doesn't mean you aren't improving; rating is relative to others and isn't a sole factor of what you can do.
The key is: "PRACTICE, PRACTICE, PRACTICE."
Don't stop even if you get stuck. Get help immediately. Do one or more of the following:
Try to find other people's solutions or read the editorial. Get the main idea of the solution. Now CLOSE the solution and implement yours without reading the solution again. This is quite important so that the algorithm/solution will sink into your head.
Participate in contests. There is no better practice than actual contests. Contests help with your ability to contain your stress and will test your strengths to the maximum. After each contest, make sure to solve all the questions that you did not solve during the contest. This is a key point.
Let me define “Stuck” for you. Stuck is a state when you have completely tried your level best, all ideas you have had have failed, and you can't think of more.
Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, :)
Rating would automatically improve as you improve.
Once you're comfortable with A and B level problems, try pushing for C, then push for D. Don't stop. Push harder, you'll definitely be good someday.
Add your friends/seniors and try to compete; try setting benchmarks and work hard. And most importantly:
Step 5: GLHF. Have fun. You really can't be good at something if you don't like it. So have fun! Good luck!
Thanks a lot, we deserved a post like this
You are welcome. :)
That was really helpful for a beginner like me... Thanks a lot :)
Welcome :)
One of the great posts I've read !
Thanks!
Inspiring!!
Hahaha. Thanks! :D Long way to go!
click
I think this is very well said. This blog post contains some great advice :)
Great post!
I would suggest that if you are stuck at a problem, just leave it for the time being and come back to it later. Sometimes, solutions do not strike in one go but that does not mean that one can't solve the problem at all. So just give a few tries (maybe 3). If you still can't solve the problem, only then proceed to see the tutorial or other people's solution.
One day, my color shall change :)
me too :)
__fuck_u :)
how do I know if a problem belongs to Div 1 or Div 2?
On the right side of your problem page, it shows the contest which the problem is in.
As a newbie, you should never care about rating because that is your biggest barrier in trying harder and trying problems out of your comfort zone during a competition. Even if your rating is going down, it doesn't mean you aren't improving; rating is relative to others and isn't a sole factor of what you can do. Exactly what i needs, I'm caring much about my rating although it isn't worth.
I don't get it. Why would you not try harder problems if you care about your rating? It's not like if you get WA on a harder problem, the score goes down or something on the other already ACed problems :/
When i care much about rating during live contests, i don't feel comfortable and don't perform well. So, for me, when i don't care something, it's usually better.
I see, it's just personal preference then maybe. I personally perform better when I do care about my rating.
In my opinion, http://cp-algorithms.com/ (english version of http://e-maxx.ru/) is the best place to find explanations and implementations for algorithms in C++. In addition, one of the best resources is the problem list on the bottom of almost every algorithms page; I find that if I solve most problems on that list for a given algorithm I become much better at that algorithm. My favorite page is the segment tree page. Through its explanations I gained important intuition on how to code non-standard segment trees which has helped me a lot on contests.
I trusted cp-algorithms but they let me down with a broken code lol, I had to fix it myself (they had integer overflow literally everywhere)
What was that code for?
Discrete root.
Did you create an issue to their gihub repo and help them to fix the code ?
No
Addy Bhaiya Gawd
I just wish to become Pupil TAT