Olympic Sinh Viên 2021 - Chuyên tin - Năng lượng mặt trời

View as PDF

Submit solution

Points: 0.20 (partial)
Time limit: 2.0s
Memory limit: 512M

Problem source:
Olympic Sinh Viên
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

In case the statement didn't load correctly, you can download the statement here: Statement


Comments

Please read the guidelines before commenting.



  • 5
    vudinhlong  commented on June 27, 2026, 5:12 p.m. edited

    ~s~ mà lớn hơn ~t~ thì tức là ~s \to n~ và ~1 \to t~ nhé các bạn và tấm pin cần tìm ở truy vấn là tấm pin đầu tiên khi đi từ ~s \to t~.


  • 0
    tintk  commented on Oct. 2, 2025, 5:13 p.m. edited

    lưu ý d có thể > n


  • 4
    Groot  commented on Dec. 2, 2024, 1:54 a.m. edit 2

    Edit: Mình định rep comment của bạn dưới nhưng lỡ đăng thành 1 comment riêng :V


    CTDL

    • Dùng Segment Tree
    • Mỗi nút trong Segment Tree lưu:
      • Tổng đoạn (sum).
      • Giá trị nhỏ nhất (min_val).
      • Vị trí nhỏ nhất (min_pos).
    • Thay vì thực sự xoay mảng (truy vấn loại 1), sử dụng 1 biến offset để điều chỉnh chỉ số l , r.

    Xử lý các truy vấn

    Loại 1:

    Cộng thêm d vào offset và lấy mod để giữ chỉ số trong khoảng [0, n-1].

    Loại 2, 3:
    Về phần cài đặt

    Mình thấy thì bài này cài đặt như Segment Tree cổ điển thôi, tuy cài có chút phức tạp hơn nhưng ý tưởng cơ bản thì không có gì mới lắm....


    Mấu chốt thuật toán:

    Ở mỗi truy vấn, ta cần phải tính chỉ số thật sự của st

    Công thức:

    int real_s = (s - offset - 1 + n * n) % n + 1;
    int real_t = (t - offset - 1 + n * n) % n + 1;
    

    Bên cạnh đó, phải lưu ý rằng sẽ có 2 trường hợp xảy ra:

    TH 1. s <= t : truy vấn từ s -> t như bình thường

    TH 2. s > t : truy vấn từ s -> n1 -> t

    TH 2, cần lưu ý khi truy vấn loại 2...?


    Code mẫu:

    https://ideone.com/1XU1IC


  • 0
    Rykrax  commented on May 14, 2024, 3:02 a.m.

    xin ý tưởng bài này với ae