Блог пользователя Addy

Автор Addy, история, 8 лет назад, По-английски

"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.net/

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.net/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!

  • Проголосовать: нравится
  • +33
  • Проголосовать: не нравится

»
8 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Thanks a lot, we deserved a post like this

»
8 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

That was really helpful for a beginner like me... Thanks a lot :)

»
8 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

One of the great posts I've read !

»
8 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Inspiring!!

»
8 лет назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится
»
8 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Your rating doesn't matter. Once you put your rating to a side, you'll be more aggressive in solving, :)

I think this is very well said. This blog post contains some great advice :)

»
6 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Great post!

Don't stop even if you get stuck. Get help immediately.

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.

»
6 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

One day, my color shall change :)

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

how do I know if a problem belongs to Div 1 or Div 2?

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    On the right side of your problem page, it shows the contest which the problem is in.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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 :/

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      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.

      • »
        »
        »
        »
        5 лет назад, # ^ |
          Проголосовать: нравится +9 Проголосовать: не нравится

        I see, it's just personal preference then maybe. I personally perform better when I do care about my rating.

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Addy Bhaiya Gawd

»
4 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

I just wish to become Pupil TAT