- Kiến thức : sort, cây it, lca ,dfs... , chủ yếu là cấu trúc dữ liệu
- Tóm tắt : update cả đoạn,truy xuất 1 thằng , update 1 thằng ,truy xuất cả đoạn.
- Độ khó : cài nản ~~
- Giải : có thể dùng lca để ăn 50% test hoặc dùng cách full theo tư tưởng sau :
+ Đầu tiên dfs để tính mảng nhãn[] và mảng con[] ( ý nghĩa thì theo tên thui :v)
+ Xử lí offline các truy vấn : sort lại theo c
+ Gọi a[i] = i và w[u] là cạnh từ cha[u] đến u. Sort lại mảng a theo w tăng dần . Mảng a giống như mảng lưu các đỉnh.
+ Ta xử lí off các truy vấn : sử dụng 1 con trỏ X với ý nghĩa w[a[j]]<=c[i] (1<=j<=X). Với mỗi truy vấn ta xét :
.Truy vấn 1: Gọi chachung=lca(u[i],v[i]). đếm số lượng cha của u[i] =A, số lượng cha của v[i]=B, số lượng cha của chachung =C trong đoạn từ a[1->x] đáp án là A+B-C*2.
.Truy vấn 2: tưởng tự : nếu u[i] là cha của v[i] thì đáp án là số con của v[i] trong đoạn từ a[1->X] ngược lại đáp án là X trừ số con của v[i] trong đoạn từ a[1->X] .
+ Cuối cúng sort lại truy vấn r xuất ra
*** NOTE : dựa trên sol của anh NBVQuang 14ti :v
Ý tưởng dễ hiểu nhưng cài thì .... ~~
Có vài gợi ý để cài cho dễ : chủ yếu dựa vào cái mình mới hấp thụ được từ boss Quang :v
- Khi dfs xong nhưng đỉnh v là con u sẽ thỏa : nhãn[u]<= nhãn[v] <= nhan[u]+con[u]-1 (vẽ hình ra sẽ hiểu).
- Do đó khi cập nhật loại 1: với mỗi thằng a[j] mới thỏa điều kiện ta sẽ cập nhập các đỉnh là con của nó và cả các đỉnh nhận nó là con (đơn giản là phải vẽ hình ra trước cho dễ nhìn ~~)
+ Cập nhật các đỉnh là con nó : gọi đỉnh đó là u và con của nó là v ta có : nhãn[u]<=nhãn[v]<=nhan[u]+con[u]-1 nên các đỉnh có nhãn từ nhãn[u] đến nhãn[u]+con[u]-1 sẽ là con của u. (cập nhật cả đoạn này lên). phần này để xử lí truy vấn 1. Lúc sau truy xuất 1 phần tử
+ Với mỗi thằng thêm vào chỉ cập nhập chính nó lên 1.Phần này để xử lí truy vấn 2. lúc sau truy xuất cả đoạn từ nhan[u] đến nhan[u]+con[u]-1 và xuất ra
======= ^_^ Good luck ^_^ ======
(Do đang hơi feel nên mình viết hơiss ... mong mn thông cảm :3)
CODE
các lần nộp : - nộp lần 1 (0đ) : truy vấn 2 bị sai + sort sai :3 - lần 2 : ok
Không có nhận xét nào:
Đăng nhận xét