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

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

I've been doing competitive programming for about 2-3 months and have gone through these topics so far:

  • Basics (Conditional statements, loops, switch)
  • Bitwise operators
  • Arrays, Strings
  • Greedy algorithms
  • Linear search, Two pointers
  • Binary search
  • Prefix sum
  • Sorting
  • Number Theory (sieve, modulo, exponentiation)
  • Pointers
  • STL
  • Recursion
  • Basic Probability and Combinatorics

Lately, I've been practicing questions in the 1000-1400 range.

Next, I'm thinking of diving into:

  • Stack

  • Queue

  • Tree

  • Heap

  • Hashmap

  • Trie

  • Backtracking

  • Graph (BFS, DFS, Shortest Path)

  • Dynamic Programming

Does this sequence seem okay? Any tips on how to approach these topics?

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

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

I have done same topics which u have done with stack and queue extra and believe me just practice this much you can reach 1400+ by this much topics only once u reach 1400 then study dp and graphs before that there will be no use as u will not be able to solve those problems anyway in the contest

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

    What range of problems should I focus on? I find it hard to solve constructive algorithms. Any suggestions for that?

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

      for constructive algo and greedy only practice is the key I also struggle with them alot. You have solved alot of 800's stop solving them you will not improve by doing them focus on currently doing 1200's and 1300's when u get comfortable in this range then increase the rating range to 1300-1400

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

I think graph before tree? tree is just a special graph, so understanding graphs first is better in my opinion, the rest seems fine

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

    Thanks! I don’t have much idea about these topics (except Stack and Queue), so Tree should be between Graph and DP, right?

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

      I believe basics graphs are much more useful than Tree. (Like bfs, dfs are must have imho)

      Also for me personally topic of DP was easier than Tree (and also it's occurs more often in contests afaik)

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

I believe that the situation does not depend on the topics you know more than the extent of your knowledge and practice on these topics.

  • STL, Prefix sum, Two pointers, Binary search, Number theory and Bits (Maybe complete search also) I think These topics are enough to reach 1400+, how many Binary search problems have you solved? and what is the Quality? did you benefit from it?

After you have been comfortable you can learn techniques like DP, also you can start to study Graph theory (you can study the basics right now)

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

You seemed clueless on your topics, as they are separated too randomly.

Learn exhaustive search, and with it backtracking as well. This is basic stuff you'd always need, not to solve any problem, but to complete your basic methodologies.

Stack+Queue for basic FIFO/LIFO data structures, which would enable you to work with graph and DP topics. And for graph, tree is a welcome optional addition, though I bet you'd learn trees on your own when practicing graph problems anyway.

The rest, don't. Not yet your time to do so. Maybe heap is okay, but the rest should be left behind when you're more established.