Hướng dẫn giải của AMSOI 2024 Round 4 - Chặt-Nhị-Phân-able


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.

Một dãy là chặt nhị phân able khi và chỉ khi nó đồng biến hoặc nghịch biến.

Nói cách khác, dãy đó phải có dạng ~a_1 \le a_2 \le ... \le a_n~ hoặc ~a_1 \ge a_2 \ge ... \ge a_n~.

Ta sẽ tách ra làm hai phần để đếm các dãy đồng biến và các dãy nghịch biến, rồi cộng lại với nhau.

Để đếm các dãy đồng biến, ta chỉ cần duy trì một biến ~cnt~ để đếm, nếu ~a_i \le a_{i-1}~ thì ~cnt = cnt + 1~, ngược lại ~cnt = 1~. Sau đó ta cộng vào đáp án ~cnt~ đơn vị.

Đây tương đương với việc đếm các dãy đồng biến kết thúc tại ~i~.

Tương tự ta đếm được các dãy nghịch biến.

Tuy nhiên, một vấn đề xảy ra đó là ta bị đếm lặp, tức là các dãy vừa đồng biến vừa nghịch biến, nói cách khác là các dãy bằng nhau. Ta chỉ cần đếm các dãy loại này và trừ nó đi.