Hướng dẫn giải của HSG THPT Thanh Hóa 2020 - Tam giác


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Gọi ~x,y,z~ lần lượt là độ dài của ba cạnh tam giác. Không mất tính tổng quát, ta giả sử ~x \le y \le z~.

Ta có các tính chất:

  • ~x^2 + y^2 < z^2~ thì tam giác này nhọn.

  • ~x^2 + y^2 = z^2~ thì tam giác này vuông.

  • ~x^2 + y^2 > z^2~ thì tam giác này tù.

Dựa vào các tính chất trên, ta có thể đếm số bộ tam giác tương ứng bằng cách sắp xếp dãy ~a~ lại theo chiều không giảm. Bài toán quy về đếm số bộ ba ~(i,j,k)~ thỏa mãn ~1 \le i < j < k \le n~ và bộ ~(a_i,a_j,a_k)~ tương ứng với ~(x,y,z)~. Ta có thể dùng hai vòng ~for~ để cố định ~i~ và ~j~, sau đó đếm số ~k~ thỏa mãn. Việc này có thể làm bằng tìm kiếm nhị phân hoặc tối ưu nhất là dùng hai con trỏ.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    tranbaphu098  đã bình luận lúc 24, Tháng 4, 2025, 11:37

    Ai bt code ko cho tui code vs


  • -3
    hoano1  đã bình luận lúc 13, Tháng 1, 2025, 10:51 chỉnh sửa

    bài này dùng python có thể AC không nhỉ?


  • 5
    vuthinh1072008  đã bình luận lúc 7, Tháng 8, 2024, 11:49

    Ad ơi tam giác nhọn phải là x ^ 2 + y ^ 2 > z ^ 2 còn tam giác tù là x ^ 2 + y ^ 2 < z ^ 2