| # | Bài tập | Điểm | Thời gian: | Giới hạn bộ nhớ |
|---|---|---|---|---|
| 1 | Chiến binh Z | 100 (p) | 1.0s | 256M |
| 2 | Dãy con tăng | 100 (p) | 4.0s | 256M |
| 3 | Đường đến trường | 100 (p) | 1.0s | 256M |
| 4 | Truy vấn đồ thị | 100 (p) | 1.0s | 256M |
| 5 | Hiệu ứng dây chuyền | 100 (p) | 2.0s | 256M |
Khi Majin Buu - một mối nguy hại lớn được giải phong ấn, các chiến binh Z phải chọn ra những chiến binh mạnh nhất để đồng hành cùng bảo vệ Trái Đất.
Họ tìm được \(N\) chiến binh, sức mạnh của người thứ \(i\) \((1 \leq i \leq N)\) là \(p_i\). Bởi vì thời gian là có hạn nên team Z muốn tìm ra một chiến binh có đủ sức mạnh càng sớm càng tốt. Họ có một kĩ thuật ít người biết là Fusion Dance - kĩ thuật cho phép từ hai người có cùng sức mạnh tạo ra được một chiến binh mới có chỉ số sức mạnh bằng tổng sức mạnh của hai người đó, tức là nếu hai người thứ \(i\) và \(j\) \((i \neq j)\) có \(p_i = p_j\) thì hai người này có khả năng hợp thể thành một người mới có chỉ số sức mạnh bằng \((p_i + p_j)\). Người được tạo thành từ phép hợp thể vừa nếu vẫn có thể tiếp tục hợp thể với các người khác miễn là thỏa mãn điều kiện sức mạnh bằng nhau.
Yêu cầu: Với mỗi \(x\) từ \(1\) đến \(N\), hãy giúp team Z tìm ra cách tạo ra chiến binh có chỉ số sức mạnh lớn nhất từ \(x\) chiến binh đầu tiên.
Test 1
5
3 2 4 1 2
3 3 4 4 8
Cho một dãy số nguyên \(a_1, a_2, \ldots, a_n\) \((1 \leq a_i \leq 10^6)\). Hãy đếm số dãy con \(i_1, i_2, \ldots, i_k\) của dãy sao cho
Dòng đầu tiên chứa \(T\) \((1 \leq T \leq 3)\) là số bộ dữ liệu.
\(T\) nhóm dòng sau, mỗi nhóm dòng có dạng như sau:
Test 1
3
1
1
3
1 2 3
5
3 4 2 2 4
1
5
3
Mỗi ngày, có \(n\) em học sinh cần được đưa từ điểm đón xe buýt đến trường. Đường đến trường của các em có thể được coi như một đoạn thẳng từ điểm \(0\) đến điểm \(L\) trên trục số \(O_x\). Có \(n\) em học sinh cần di chuyển từ điểm \(0\) đến điểm \(L\), hiện tại đang có một chiếc xe chở được tối đa \(k\) người tại nơi xuất phát (điểm \(0\)). Vận tốc di chuyển của mỗi em là \(v_1\) (đơn vị độ dài / giây) và vận tốc di chuyển của xe buýt là \(v_2\) (đơn vị độ dài / giây).
Để đến trường sớm nhất có thể thì các em không chỉ đứng đợi tại điểm đón mà có thể tự ý di chuyển (nếu đang không ở trên xe buýt). Biết rằng xe buýt có thể dừng tại bất cứ đâu để đón các em học sinh và coi như thời gian dừng, đón, gia tốc của xe buýt là không đáng kể.
Yêu cầu: Tìm số giây nhỏ nhất có thể để cả \(n\) em di chuyển từ điểm \(0\) đến điểm \(L\). Biết rằng mỗi người chỉ được lên xe tối đa một lần.
Test 1
1 5 1 2 1
2.5
Test 2
2 5 1 2 1
3.5
Cho một đồ thị vô hướng gồm \(n\) đỉnh và \(m\) cạnh. Đồ thị đảm bảo từ một đỉnh \(u\) có đường đi đến đỉnh \(v\) bất kì.
Gọi \(f(u, v)\) là số lượng cạnh cầu ít nhất trên đường đi từ \(u\) đến \(v\).
Cho \(q\) truy vấn, mỗi truy vấn có dạng: \((u, v, w)\) yêu cầu tìm đỉnh \(x\) sao cho \(f(u, x) + f(v, x) + f(w, x)\) nhỏ nhất có thể.
Test 1
6 7 2
1 2
1 6
2 3
1 3
4 5
5 6
4 6
1 2 5
1 2 3
1
0
Có \(n\) quả bom nằm trên một đoạn thẳng. Quả bom thứ \(i\) \((1 \leq i \leq n)\) ở vị trí \(x_i\) và có bán kính nổ là \(r_i\). Khi quả bom thứ \(i\) nổ sẽ kích nổ các quả bom \(j\) mà \(x_i - r_i \leq x_j \leq x_i + r_i\).
Để tiến hành việc tháo dỡ \(n\) quả bom này, bạn cần tính toán độ nguy hiểm của mỗi quả bom. Độ nguy hiểm của quả bom thứ \(i\) là \(c_i\) - số quả bom sẽ bị nổ nếu ban đầu
ta chỉ kích nổ quả bom thứ \(i\).
Yêu cầu: Hãy tính \(S = \sum_{i=1}^{n} i \times c_i\). Vì \(S\) có thể rất lớn nên chỉ cần đưa ra số dư trong phép chia \(S\) cho \(({10}^9 + 7)\).
Đảm bảo rằng \(x_i \leq x_{i+1}\), \(\forall 1 \leq i < n\).
3
1 1
3 3
10 10
14
\(c_1 = 1\), \(c_2 = 2\), \(c_3 = 3\).
\(S = c_1 + 2c_2 + 3c_3 = 14\).