Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Cứu hộ

100 điểm

Vũ trụ Z có \(n\) hành tinh, các hành tinh được đánh số từ \(1\) đến \(n\). Một hệ thống gồm \(m\) đường dịch chuyển, đường dịch chuyển thứ \(k\) \((1 \leq k \leq m)\) sẽ giúp di chuyển từ hành tinh \(i_k\) đến hành tinh \(j_k\) và mất chi phí là \(e(i_k, j_k)\). Một vụ nổ trong vũ trụ đã làm ảnh hưởng lớn đến tất cả các hành tinh, trừ hành tinh số \(1\). Hành tinh số \(1\) lên kế hoạch cứu hộ cho \(n - 1\) hành tinh còn lại.

Các nhà khoa học ở hành tinh số \(1\) đã tìm ra cách di chuyển giúp đội cứu hộ có thể di chuyển đến một hành tinh khác với chi phí nhỏ hơn. Cụ thể, với số nguyên không âm \(a\) mà các nhà khoa học thiết đặt, giả sử đội cứu hộ lần lượt di chuyển qua dãy gồm \(p\) hành tinh \(1 = x_1, x_2, \ldots, x_p\). Như vậy, đội cứu hộ sẽ phải sử dụng \(p - 1\) đường dịch chuyển, gọi \(s_1\) là tổng chi phí của \(p - 1\) đường dịch chuyển, gọi \(r_1\) là tổng chi phí của \(a\) đường dịch chuyển có chi phí lớn nhất trong \(p - 1\) đường dịch chuyển (nếu \(a > p - 1\) đường dịch chuyển thì tính tổng chi phí của \(p - 1\) đường dịch chuyển), khi đó đội cứu hộ sẽ mất chi phí là \(s_1 - r_1\).

Về phía các hành tinh, các nhà khoa học cũng đã tính toán ra số nguyên không âm \(b\) dựa trên mức độ ảnh hưởng của vụ nổ để xác định được chi phí di chuyển của cư dân. Cụ thể, nếu cư dân hành tinh \(i\) phải di chuyển qua dãy gồm \(q\) hành tinh \(i = y_1, y_2, \ldots, y_q\), gọi \(s_2\) là tổng chi phí của \(q - 1\) đường dịch chuyên, gọi \(r_2\) là tổng chi phí của \(b\) đường dịch chuyển có chi phí nhỏ nhất trong \(q - 1\) đường dịch chuyển (nếu \(b > q - 1\) thì tính tổng chi phí của \(q - 1\) đường dịch chuyển), khi đó cư dân sẽ mất chi phí là \(s_2 + r_2\).

Chi phí để đội cứu hộ gặp được cư dân của hành tinh \(i\) là tổng chi phí di chuyển của đội cứu hộ cộng với tổng chi phí của cư dân hành tinh \(i\) di chuyển để họ gặp được nhau.

Với mỗi hành tinh \(i\) \((2 \leq i \leq n)\), hãy tính chi phí nhỏ nhất để đội cứu hộ xuất phát từ hành tinh \(1\) có thể gặp cư dân của hành tinh \(i\).

Input

  • Dòng đầu chứa bốn số \(n, m, a, b\);

  • Dòng thứ \(k\) \((1 \leq k \leq m)\) trong \(m\) dòng tiếp theo chứa ba số nguyên dương \(i_k, j_k, e(i_k, j_k)\), trong đó \(1 \leq i_k \neq j_k \leq n\) và \((i_k, j_k) \leq 10^9\). Dữ liệu đảm bảo từ hành tinh \(i\) không có quá một đường dịch chuyển tới \(j\) và không tới chính nó.

Output

  • Gồm một dòng chứa \(n - 1\) số, số thứ \(i\) là chi phí nhỏ nhất để đội cứu hộ có thể gặp cư dân của hành tinh \(i + 1\), nếu đội cứu hộ không thể gặp được cư dân thì đưa ra số \(-1\) tương ứng.

Example

Test 1

Input
4 4 1 1
1 2 1
2 3 2
3 4 3
4 2 1
Output
0 1 2 

Scoring

  • Subtask \(1\) (\(25\) điểm): \(n \leq 100\); \(m \leq 1000\); \(a = b = 0\);

  • Subtask \(2\) (\(25\) điểm): \(n \leq 100\); \(m \leq 1000\); \(a = b = 1\);

  • Subtask \(3\) (\(25\) điểm): \(n \leq 10^5\); \(m \leq 10^5\); \(a = b = 0\);

  • Subtask \(4\) (\(25\) điểm): \(n \leq 10^5\); \(m \leq 10^5\); \(0 \leq a, b \leq 3\).

root

Bốn viên đá quý

100 điểm

Trong một vương quốc cổ đại, có một truyền thuyết kể về một kho báu bị chôn giấu. Chìa khóa để mở kho báu không phải là một chiếc chìa vật lý, mà là một công thức toán học. Nhà thám hiểm trẻ tuổi, sau khi tìm thấy bộ sưu tập đá quý, đã tìm đến bạn, một nhà toán học lỗi lạc.

Bạn được cho một dãy gồm \(n\) số nguyên dương phân biệt \(e_1, e_2, \ldots, e_n\), đại diện cho giá trị của \(n\) viên đá quý trong bộ sưu tập.

Yêu cầu:
Để giải mã kho báu, bạn cần tìm bốn số nguyên dương \(a, b, c, d\) từ dãy số đã cho (sao cho \(a, b, c, d\) đôi một khác nhau), để biểu thức \((a - b) \times (c - d)\) đạt giá trị lớn nhất.

Input

Dữ liệu vào được cung cấp từ đầu vào chuẩn theo định dạng sau:

  • Dòng đầu tiên chứa một số nguyên dương \(n\) (\(4 \leq n \leq 10^5\)), là số lượng viên đá quý.
  • Dòng thứ hai chứa \(n\) số nguyên dương \(e_1, e_2, \ldots, e_n\) (\(1 \leq e_i \leq 10^9\)), là giá trị của các viên đá quý.

Output

In ra một số nguyên duy nhất là giá trị lớn nhất của biểu thức \((a - b) \times (c - d)\) thỏa mãn yêu cầu đề bài.

Example

Test 1

Input
5
1 3 5 7 9
Output
36 

root

Tặng quà

100 điểm

Noel sắp tới, Ông Già Tuyết đã chuẩn bị \(2n\) món quà cho các bạn nhỏ. Các món quà có màu sắc đôi một khác nhau và có mã màu từ 1 đến \(2n\). Khi cho các món quà vào túi, Ông đã đưa ra các món quà vào theo một thứ tự mà nếu lấy ra, các món quà sẽ có mã màu lần lượt là \(c_1,c_2,…,c_{2n}\) (dãy \(c_1,c_2,…,c_{2n}\) là một hoán vị của \(1,2,…,2n\)).

Ông Già Tuyết dự định tặng quà cho \(m(m≤n)\) bạn nhỏ, mỗi bạn sẽ dược nhận hai món quà sau hai lượt tặng. Các bạn nhỏ đứng thành một hàng và Ông sẽ đi từ đầu hàng đến cuối hàng để lần lượt tặng quà cho từng bạn. Khi đứng trước một bạn nhỏ để tặng quà, Ông lần lượt lấy từng món quà ra cho tới khi lựa chọn được một món quà phù hợp và tặng bạn nhỏ, các món quà không được lựa chọn sẽ được cất đi và không được dùng để tặng quà. Khi bạn nhỏ thứ m ở cuối hàng đã được nhận quà, Ông sẽ di chuyển về đầu hàng để tặng quà lượt thứ hai tương tự như lượt thứ nhất.

Ông được biết, các bạn nhỏ luôn mong muốn nhận được hai món quà mà chênh lệch mã màu của hai món quà đó không vượt quá \(d\). Với mong muốn mang lại nhiều niềm vui cho các bạn nhỏ, Ông quyết định việc tặng quà sẽ phải đảm bảo tất cả các bạn nhỏ đều nhận được hai món quà mà chênh lệch mã màu không vượt quá \(d\).

Một cách hình thức, gọi \(m\) là số lượng bạn nhỏ được quà, Ông cần chọn ra dãy \(2m\) chỉ số \(1≤i_1<i_2<…<i_m<i_{m+1}<…i_{2m}≤2n\) sao cho \(|c_{i_k}−c_{i_{m+k}}|≤d\) với mọi \(1≤k≤m\).

Ông Già Tuyết biết rằng, có thể không tồn tại cách chọn được \(2m\) chỉ số thỏa mãn, điều đó cũng có nghĩa là không thể tặng quà như mong muốn cho cả \(m\) bạn nhỏ. Do đó, với một số nguyên dương \(d\) và thứ tự các món quà lấy ra có mã màu lần lượt là \(c_1,c_2,…,c_{2m}\), Ông muốn tính số lượng nhiều nhất các bạn nhỏ mà Ông có thể tặng quà.

Yêu cầu: Hãy giúp Ông Già Tuyết tính số lượng nhiều nhất các bạn nhỏ mà Ông có thể tặng quà đáp ứng điều kiện nêu trên.

Input

  • Dòng thứ nhất chứa hai số nguyên dương \(n\) và \(d(d \leq 5)\).

  • Dòng thứ hai chứa \(2n\) số nguyên dương \(c_1,c_2,…,c_{2n}\) là mã màu của các món quà lần lượt được lấy ra.

Các số trên cùng một dòng cách nhau bởi dấu cách.

Output

  • Ghi ra một số nguyên duy nhất là số lượng nhiều nhất các bạn nhỏ mà Ông Già Tuyết có thể tặng quà.

Example

Test 1

Input
3 1
1 5 6 3 4 2
Output
2
Note

Ông Già Tuyết có thể tặng tối đa cho 2 bạn nhỏ.

  • Lượt thứ nhất, món quà có mã màu 5 tặng bạn thứ nhất, món quà có mã màu 3 tặng bạn thứ hai.

  • Lượt thứ hai, món quà có mã màu 4 tặng bạn thứ nhất và món quà có mã màu 2 tặng bạn thứ hai.

Scoring

  • Có \(40\%\) số test tương ứng với \(40\%\) số điể của bài thỏa mãn \(n \leq 10\);

  • \(40\%\) số test khác ứng với \(40\%\) số điểm của bài thỏa mãn \(n \leq 100\);

  • \(20\%\) số test còn lại ứng với \(20\%\) số điểm của bài thỏa mãn \(n \leq 1000\).

root

Neko

100 điểm

Sau khi trải qua kì thi International Cat Programming Contest (ICPC) đầy căng thẳng và nhân dịp Giáng Sinh sắp đến, Neko đã quyết định sẽ quay trở về hành tinh mèo để du lịch và đón Giáng Sinh. Một trong những trò chơi truyền thống tại hành tinh mèo mỗi dịp Giáng Sinh là trò chơi "Permeowtation" với luật chơi như sau:

Ban đầu, người chơi sẽ được cho một hoán vị \(p_1, p_2, \ldots, p_n\). Ở mỗi bước, người chơi có thể hoán đổi hai phần tử liên tiếp trong hoán vị (nói cách khác, chọn một vị trí \(i\) sao cho \(1 \le i < n\) và hoán đổi hai phần tử \(p_i\) và \(p_{i+1}\)). Người chơi cần sắp xếp lại hoán vị \(p\) ban đầu với số lượng bước ít nhất có thể.

Vốn là người chơi giỏi nhất tại hành tinh mèo, Neko đã cảm thấy quá nhàm chán với trò chơi và nghĩ ra một phiên bản nâng cấp như sau:

Người chơi sẽ được cho hai hoán vị \(a\) và \(b\) với cùng độ dài \(n\). Với mỗi hoán vị có thứ tự từ điển từ \(a\) đến \(b\), người chơi sẽ xác định số bước ít nhất cần thực hiện để hoàn thành trò chơi. Cuối cùng, người chơi cần cho biết tổng số bước với tất cả hoán vị nói trên.

Neko nhận ra rằng việc hoàn thành trò chơi trên sẽ mất rất nhiều thời gian, và nhà cậu còn bao việc khác phải làm. Hãy giúp Neko hoàn thành trò chơi trên nhé.

Do đáp án có thể rất lớn, hãy in ra đáp án sau khi chia lấy phần dư cho \(10^9 + 7\).

\InputFile
Dòng đầu tiên gồm số nguyên dương \(n\) (\(1 \le n \le 200\,000\)) -- độ dài của hai hoán vị \(a\) và \(b\).

Dòng thứ hai gồm \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le n\)) -- mô tả hoán vị \(a\).

Dòng thứ bao gồm \(n\) số nguyên dương \(b_1, b_2, \ldots, b_n\) (\(1 \le b_i \le n\)) -- mô tả hoán vị \(b\).

Dữ liệu vào đảm bảo hoán vị \(a\) có thứ tự từ điển nhỏ hơn hoặc bằng hoán vị \(b\).

\OutputFile
In ra một số nguyên duy nhất là tổng số bước cần tìm sau khi chia lấy phần dư cho \(10^9 + 7\).

\Examples
\beginexample
\exmp
3
2 1 3
3 1 2

5

\endexample
\beginexample
\exmp
5
1 2 3 4 5
1 2 3 4 5

0

\endexample

\Note
Một hoán vị độ dài \(k\) là một dãy gồm \(k\) số nguyên có giá trị từ \(1\) đến \(k\), mỗi giá trị xuất hiện đúng một lần.

Với hai hoán vị \(p_1, p_2, \ldots, p_n\) và \(q_1, q_2, \ldots, q_n\) bất kì, ta định nghĩa hoán vị \(p\) có thứ tự từ điển nhỏ hơn hoán vị \(q\) nếu tồn tại một chỉ số \(i\) (\(1 \le i \le n\)) sao cho:

  • \(p_j = q_j\) với \(1 \le j < i\)
  • \(p_i < p_j\)

Ở ví dụ 1, ta có thể biến đổi từng hoán vị như sau:

  • \([2, 1, 3] \xrightarrow{(3, 1)} [1, 2, 3]\)
  • \([2, 3, 1] \xrightarrow{(2, 3)} [2, 1, 3] \xrightarrow{(1, 2)} [1, 2, 3]\)
  • \([3, 1, 2] \xrightarrow{(1, 2)} [1, 3, 2] \xrightarrow{(2, 3)} [1, 2, 3]\)

Tổng số bước biến đổi cần tìm là \(1 + 2 + 2 = 5\).

Ở ví dụ 2, hoán vị \([1, 2, 3, 4, 5]\) đã được sắp xếp tăng dần nên ta không cần thực hiện bước biến đổi nào cả.

\Scoring

  • Subtask 1 (\(10\%\) số điểm): \(n \le 2\,000\), \(a_i = b_i\)
  • Subtask 2 (\(20\%\) số điểm): \(n \le 2\,000\), \(a_i = i\), \(b_i = N-i+1\)
  • Subtask 3 (\(30\%\) số điểm): \(n \le 2\,000\)
  • Subtask 4 (\(40\%\) số điểm): Không có giới hạn gì thêm

\endproblem

Xem thêm