Skip to content

Instantly share code, notes, and snippets.

@ngobach
Last active October 21, 2017 13:29
Show Gist options
  • Save ngobach/6658468705d8b3a5a8845b1aef3b73b8 to your computer and use it in GitHub Desktop.
Save ngobach/6658468705d8b3a5a8845b1aef3b73b8 to your computer and use it in GitHub Desktop.

I. Rain

Dùng stack để tính lượng mưa tạo thành bởi cột đó và các cột bên trái nó. (hơi phức tạp)

J. Sale

Số nhỏ nhất trong dãy chắc chắn là giá tiền đã giảm. Loại bỏ nó và số = 4/3 nhân với nó ra khỏi dãy (dùng map để đánh dấu đã xóa). Xóa xong cả 2 số rồi thì số nhỏ nhất tiếp theo sẽ chắc chắn là giá tiền mới. cứ thế đến khi nào hết toàn bộ dãy.

D. Dance

Xét riêng các vị trí chẵn và lẻ. Sau mỗi lần nhảy, các vị trí lẻ sẽ dịch theo chiều kim đồng hồ sang 1 vị trí và giữ nguyên thứ tự. Các vị trí chẵn thì ngược lại. Sau K lần nhảy thì sẽ xác định được vị trí của nó sử dụng công thức:

p = p-1; // Đổi về cơ số 0, tức là các vị trí sẽ bắt đầu đếm từ số 0 -> n-1
if (p%2==0) {
  // Vị trí lẻ
  p = p+k*2; // Sau mỗi lần nhảy 0 chiếm vị trí của 2, 2 chiếm vị trí của 4 .v.v. Nên sau k lần nhảy p sẽ chiếm vị trí của (p+k*2)%n
} else {
  // Chẵn ngược lại
  p = (p-k*2)%n+n;
}
khi đó 2 người bên cạnh p là p-1 & p+1
int x = (p-1+n)%n+1;
int y = (p+1+n)%n+1;
cout << min(x,y) << ' ' << max(x,y) << '\n';

F. Flight

Cộng trừ basic. bài này yêu cầu cẩn thận vì có test hiểm, như cộng tràn phút >= 60 thì phải đá sang giờ. Nếu giờ sau khi cộng trừ âm thì phải +24h và -1 ngày.

K. Triangle

If else

B. Array

Tính tổng bình thường.

E. Bamboo

Sử dụng Quy hoạch động. Bảo thầy dạy bài này cho

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment