📝

Cách mình sử dụng Notion trong việc luyện Lập trình thi đấu

2023-01-27--- views
Cách mình sử dụng Notion trong việc luyện Lập trình thi đấu

Đây là submission của mình cho tập chí VNOI nhưng không được nhận, nên mình chỉ đăng lại trên đây.

Trong việc luyện tập CP, một trong những vấn đề phổ biến là làm sao để cấu trúc việc luyện tập, làm sao để tạo thói quen làm bài, làm sao để rút ra những bài học từ những bài đã giải. Trong bài blog này, mình muốn chia sẽ cách mình sử dụng Notion trong việc học Giải thuật và thoát khỏi "elo hell" để cuối cùng đặt "đai xanh lam". Mình chưa có nhiều kinh nghiệm về CP nhưng mình hi vọng bài blog này sẽ một phần giúp các bạn trên hành trình Giải thuật!

Account Claude1 cũ của mình từ cuối lớp 12 đến cuối năm 1

Account yanglake hiện tại của mình từ cuối năm 1 đến hiện tại

Notion là gì?

Notion dành cho ghi chú, tasks, wiki và cơ sở dữ liệu. Ứng dụng kết hợp các ứng dụng công việc hàng ngày thành một. Nó phục vụ như một không gian làm việc tất cả trong một để ghi chú, quản lý tác vụ và quản lý dự án. Ứng dụng có thể được truy cập thông qua hầu hết các trình duyệt web. Notion Labs Inc được thành lập vào 2016 bởi Ivan Zhao, Chris Prucha, Jessica Lam, Simon Last and Toby Schachman. Đến nay, Notion được sử dụng rộng rãi và đang là một trong những ứng dụng phổ biến nhất của giới trẻ để quản lí học tập.

Cách sử dụng Notion cơ bản

Markdown

Trích từ The Markdown Guide:

Markdown là ngôn ngữ đánh dấu mà bạn có thể sử dụng để thêm các thành phần định dạng vào tài liệu văn bản thuần túy. Được tạo bởi John Gruber vào năm 2004, Markdown hiện là một trong những ngôn ngữ đánh dấu phổ biến nhất thế giới. Sử dụng Markdown khác với sử dụng trình chỉnh sửa WYSIWYG. Trong một ứng dụng như Microsoft Word, bạn bấm vào các nút để định dạng từ và cụm từ và các thay đổi sẽ hiển thị ngay lập tức. Markdown không phải như vậy. Khi bạn tạo tệp có định dạng Markdown, bạn thêm cú pháp Markdown vào văn bản để cho biết những từ và cụm từ nào sẽ trông khác.

Các bạn có thể tìm hiểu thêm về Markdown trên The Markdown Guide.

Blocks

Mọi thứ trong trang Notion đều là một block. Và sau khi bạn quen với việc sử dụng các khối, việc xây dựng và tùy chỉnh các trang trở nên dễ dàng hơn vì bạn có một bộ tùy chọn hoàn toàn mới trong tầm tay. Khi bạn đã tạo các blocks, việc sắp xếp chúng trên một trang đơn giản như kéo và thả — không cần viết code để tạo quy trình công việc tùy chỉnh.

Văn bản, hình ảnh, âm thanh, PDF — tất cả đều là các block mà bạn có thể chèn vào các trang. Nhập / để nhanh chóng thêm nội dung vào bất kỳ trang nào.

Một số loại blocks cơ bản bao gồm:

  • Basic blocks (text, headings, bullets, numbered lists)
  • Inline blocks (mention tags, dates)
  • Media (images, video, code, audio)
  • Embeds (Google Drive, Youtube, PDF, GitHub, ...)
  • Database (tables, boards, lists)
  • Advanced blocks (table of contents, maths equations/KaTeX, templates)

Database

Khối database giúp bạn cấu trúc thông tin theo nhiều cách khác nhau. Với lựa chọn sáu dạng xem cơ sở dữ liệu, bạn kiểm soát cách hiển thị nội dung - cho phép bạn sắp xếp, phân loại, gắn nhãn, lọc, tìm kiếm, xem và sử dụng Notion để hoàn thành công việc của mình.

Có ba điều phân biệt cơ sở dữ liệu Notion với bảng tính và cơ sở dữ liệu mà bạn có thể xây dựng bằng phần mềm khác:

  • Mỗi mục là trang có thể chỉnh sửa riêng của nó: Mỗi mục bạn nhập vào cơ sở dữ liệu của mình có thể được mở dưới dạng trang Notion của riêng nó, nơi bạn có thể tạo lớp trong bất kỳ thông tin nào bạn muốn.
  • Thuộc tính có thể tùy chỉnh: Thêm thuộc tính để bối cảnh hóa, gắn nhãn và bổ sung bất kỳ mục cơ sở dữ liệu nào có thêm thông tin, như ngày, người, văn bản, liên kết, v.v.
  • Bạn có thể chuyển đổi giữa nhiều bố cục: Dữ liệu của bạn không bị kẹt trong một bảng. Xem chính xác cùng một cơ sở dữ liệu dưới dạng bảng, danh sách, lịch, thư viện và dòng thời gian — bất cứ điều gì làm cho thông tin trở nên hữu ích nhất.

Các bạn có thể tham khảo cách sử dụng khối database chi tiết trên documentation của Notion tại đây: https://www.notion.so/help/intro-to-databases

Cách mình sử dụng Notion để luyện tập

Mình sử dụng Notion để lưu lại các bải đã giải trên các nền tảng, và kèm theo lời giải và observation mình thu được từ dạng đó. Để truy xuất các bài ấy, mình sẽ lưu các bài ấy dưới dạng cơ sở dữ liệu trên Notion. Cho mỗi bài, mình sẽ lưu các đặc tính sau:

  • Thời gian hoàn thành lần đầu
  • Tên bài
  • URL/Đề bài
  • Tags/Các chủ đề liên quan về bài
  • Observation/Cách giải
  • Lần giải gần nhất

Để luyện tập các chủ đề mới hoặc các observations mới, mình sẽ thêm 1 đặc tính Lần giải tiếp theo. Bạn có thể sử dụng chức năng sort của cơ sở dữ liệu Notion để tìm các bài cần giải lại của ngày đó.

Để làm cho công đoạn nhập liệu nhanh hơn, mình tạo thêm 1 instance của database ở trang chính của Notion của mình, kèm theo 1 đặc tính checkbox để xoá khỏi instance ở trang chính sau khi nhập liệu xong.

Mình sẽ lấy ví dụ về cách mình ôn tập 1 bài:

Đây là bài F của Codeforces Round #835 (Div. 4). Vì mình không giải kịp bài nào trong contest nên mình đã upsolved nó và lưu lại trên cơ sở dữ liệu - vì insight mới mình học được từ bài này. Ở giải đoạn nhập liệu, mình sẽ điền

  • Date: November 22, 2022
  • Name: Quests
  • URL: https://codeforces.com/contest/1760/problem/F
  • Tags: binary search, greedy, sortings
  • Observation: Classical bin search game, for a given k, the optimal way to play a game is: for i from 0 → d: id = i % (k+1) if (i < n) sum += v[i] if satisfied amount of coins, increase k, or if not enough, decrease k
  • Revisit?: false
  • Last visited: @today (Notion sẽ tự hiểu là Nov 22, 2022)

Sau khi mình hoàn thành nhập liệu thì mình có thể check phần Revisit? thành true để ẩn khỏi dashboard. Khi revisit trên cơ sở dữ liệu chính thì nó sẽ được hiển thị trên đó.

Các bạn còn có thể tự động tạo chức năng giải lại bài hoặc thêm thủ công ngày giải lại bài. Mình thưởng sẽ tự đặt thủ công vì mình muốn tự đánh giá khả năng mình đến với observation của bài có đủ nhạy chưa. Nếu như mình đã giải lại được sau 1 tuần thì mình sẽ đặt ngày revisit là 2 tuần sau; và 4 tuần sau nếu sau 2 tuần vẫn giải được, ...

Để sort các bài trong cơ sở dữ liệu theo thời gian giải lại bài, các bạn nhấn vào nút sort:

Sau đó chọn sắp xếp thời gian giải lại bài theo thứ tự tăng dần, kèm theo đặc tính Revisit?

Tổng kết

Notion là một công cụ mạnh mẽ và hữu ích trong việc ghi chú và quản lý công việc. Notion sử dụng Markdown và các chức năng khác như blocks và cơ sở dữ liệu để nắm bắt thông tin dễ dàng và hiệu quả hơn. Học sinh, sinh viên nói riêng và bất cứ ai muốn học Giải thuật nói chung, có thể sử dụng Notion để cấu trúc việc học của mình và tạo được thói quen giải bài tập thường xuyên hơn.

Mình xin phép gửi Notion template cho system của mình: https://yangtuananh.notion.site/CP-Database-Template-db487a9e632749a2b1a6ceb4bc50072b

Nếu các bạn còn thắc mắc nào thì hãy liên hệ mình qua email tại yangtuananh2003@gmail.com.