> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hnuicpc.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# How to practice

> Effective strategies and tips to improve your competitive programming skills.

## The practice mindset

Competitive programming is a skill — and like any skill, it improves with **deliberate practice**. Here's how to make the most of your training time.

## Practice strategies

### 1. Solve problems slightly above your level

If you solve every problem easily, you're not learning. If you can't solve any, you'll get frustrated. Aim for problems where you need to **think for 20–40 minutes** before finding the solution.

### 2. Upsolve after contests

After every contest, solve the problems you couldn't finish during the contest. This is where the real learning happens.

<Note>
  **Upsolving** means solving contest problems after the contest ends. Read the editorial, understand the approach, and implement it yourself without copying code.
</Note>

### 3. Learn topics systematically

Don't just randomly solve problems. Follow a structured path:

1. **Learn the concept** (read a tutorial or watch a video)
2. **Solve 5–10 problems** on that topic
3. **Move to the next topic**
4. **Revisit** weak topics periodically

### 4. Time yourself

Practice under time pressure. Set a timer for each problem (30–60 minutes for practice, 2–5 hours for virtual contests).

### 5. Read editorials and others' solutions

After solving (or failing to solve) a problem, always read the editorial. Look at top-rated users' solutions to learn cleaner approaches.

## Recommended practice schedule

| Day       | Activity                      | Duration  |
| --------- | ----------------------------- | --------- |
| Saturday  | Virtual contest on Codeforces | 2 hours   |
| Sunday    | Upsolve contest problems      | 1–2 hours |
| Monday    | Topic study (e.g., DP)        | 1 hour    |
| Tuesday   | Solve topic problems          | 1–2 hours |
| Wednesday | Topic study (e.g., Graphs)    | 1 hour    |
| Thursday  | Solve topic problems          | 1–2 hours |
| Friday    | Mixed practice / rest         | 1 hour    |

<Tip>
  Consistency beats intensity. Solving **2–3 problems daily** is better than cramming 20 problems in one weekend.
</Tip>

## Useful resources

* [Codeforces Problemset](https://codeforces.com/problemset) — Filter by rating and tags
* [CSES Problem Set](https://cses.fi/problemset/) — Excellent curated problems
* [AtCoder Beginner Contests](https://atcoder.jp/contests/) — Great for beginners
* [CP-Algorithms](https://cp-algorithms.com/) — Algorithm and data structure tutorials
* [Competitive Programmer's Handbook](https://cses.fi/book/book.pdf) — Free PDF book

## What's next?

<Columns cols={2}>
  <Card title="Start solving" icon="play" href="/level-0/sheets/sheet-1">
    Begin with our curated beginner problem sheet.
  </Card>

  <Card title="Learn sessions" icon="graduation-cap" href="/level-0/sessions/intro-to-ps">
    Dive into our structured Level 0 training sessions.
  </Card>
</Columns>
