Bảng chữ cái (OLP MT&TN 2022 CT)

Thuận có một bảng gồm \(r\) hàng và \(c\) cột, mỗi ô trên bảng có ghi một chữ cái in hoa. Để làm giảm kích thước của bảng, Thuận muốn xóa đi một số cột của bảng này hoặc giữ nguyên, nhưng phải bảo đảm rằng, sau khi xóa, nếu ghép các kí tự trên một hàng để tạo thành xâu kí tự, \(r\) xâu kí tự tạo bởi \(r\) hàng phải đôi một phân biệt.

Yêu cầu: Hãy cho biết Thuận có bao nhiêu cách xóa (hoặc giữ nguyên) các cột để thỏa mãn điều kiện này. Hai cách được gọi là khác nhau nếu tồn tại một cột trong cách này không bị xóa còn trong cách kia thì bị xóa.

Input

Vào từ thiết bị vào chuẩn có khuôn dạng:

  • Dòng đầu tiên chứa hai số nguyên \(r (r \le 1000)\)\(c\) là số hàng và số cột của bảng;
  • Trong \(r\) dòng tiếp theo, mỗi dòng chứa \(c\) chữ cái in hoa mô tả bảng.

Output

Ghi ra thiết bị ra chuẩn một dòng chứa một số nguyên là số cách đếm được thỏa mãn điều kiện.

Scoring

  • Subtask \(1\) (\(26\%\) số điểm): \(c \le 10\);
  • Subtask \(2\) (\(32\%\) số điểm): \(c \le 15\);
  • Subtask \(3\) (\(42\%\) số điểm): \(c \le 20\).

Example

Test 1

Input
3 3
ACD
BCE
BAD
Output
4
Note

Thuận cần phải giữ lại ít nhất 2 cột. Ví dụ, nếu xóa cột 2 (giữ lại các cột 1 và 3) khi đó, các xâu kí tự AD, BE, BD tạo bởi 3 hàng là đôi một phân biệt.

...More

Bể nước (OLP MT&TN 2022 CT)

Bể nước nhà Thuận có hai vòi nước cùng chảy vào bể, nếu chỉ mở vòi thứ nhất thì phải mất \(a\) giờ mới đầy bể, còn nếu chỉ mở vòi thứ hai thì phải mất \(b\) giờ mới đầy bể. Thuận muốn biết nếu cả hai vòi cùng mở thì mất bao lâu thời gian để đầy bể.

Input

Vào từ thiết bị vào chuẩn gồm một dòng chứa hai số nguyên dương \(a,b\) \((a,b\leq 10^6)\).

Output

Ghi ra thiết bị ra chuẩn một dòng chứa một số thực với độ chính xác \(10^{-5}\) là thời gian để bể đầy nước nếu mở cả hai vòi.

Example

Test 1

Input
4 5
Output
2.22222
...More

Khai thác khoáng sản

Miền Trung - Tây Nguyên ngày nay là một vùng đất tiềm năng giàu khoáng sản chưa được khai thác nhiều. Một dự án khai thác mỏ sắt nơi đây dự định xây dựng \(N\) địa điểm và \(M\) con đường nối giữa các cặp điểm, các địa điểm được đánh số từ \(1\) đến \(N\), các con đường được đánh số từ \(1\) đến \(M\). Con đường thứ \(i\) có chi phí xây dựng \(C_i\), giá trị sử dụng \(V_i\) và nối địa điểm \(x_i\) với \(y_i\) cho phép đi lại theo cả hai chiều. Có thể có nhiều con đường nối cùng một cặp điểm. Có \(Q\) địa điểm đặc biệt nơi mà khoáng sắt tập trung nhiều là \(k_1, k_2, \ldots, k_Q\).

Ban quản lý dự án muốn chọn ra một số con đường để xây dựng, sao cho tổng giá trị sử dụng lớn hơn hoặc bằng $V^ * $, bảo đảm đi lại giữa \(Q\) địa điểm đặc biệt, và tổng chi phí xây dựng là càng nhỏ càng tốt. Hãy giúp họ tìm ra một phương án.

Đây là bài toán chỉ cần nộp các file kết quả đầu ra (OUTPUT-ONLY). Thí sinh được cho 20 file đầu vào tương ứng với 20 test, đối với mỗi file đầu vào thí sinh cần nộp một file kết quả đầu ra tìm được. Với mỗi file kết quả đầu ra đúng đắn, điểm của thí sinh được tính theo công thức trong phần Scoring.

Input

Thí sinh tải đầu vào tại đường dẫn: https://lqdoj.edu.vn/media/olp4ck3c.zip
Sau khi giải nén, bạn có 20 file đầu vào được đặt tên là 01.inp, 02.inp, ..., 20.inp, mỗi file mô tả một test theo định dạng:

  • Dòng đầu ghi bốn số nguyên \(N\), \(M\), \(Q\) và $V^ * $ (\(1 \leq N,M,Q \leq 1000\), \(1 \leq V^* \leq 10^9\));
  • Dòng thứ \(i\) trong số \(M\) dòng tiếp theo chứa bốn số nguyên \(x_i, y_i, C_i, V_i\) (\(1 \leq x_i, y_i \leq n\), \(1 \leq c_i, v_i \leq 10^6\));
  • Dòng tiếp theo chứa \(k_1, k_2, \ldots, k_Q\) (\(1 \leq k_i \leq n\)).

Dữ liệu bảo đảm $V^ * $ không vượt quá tổng giá trị sử dụng của tất cả các cạnh, và nếu xây dựng cả \(M\) cạnh thì luôn đảm bảo đi lại giữa \(Q\) đỉnh đặc biệt.

Output

Với file đầu vào name.inp, bạn cần xuất ra file đầu ra name.out chứa kết quả test tương ứng theo định dạng:

  • Dòng đầu ghi một số nguyên là tổng chi phí xây dựng tìm được;
  • Dòng thứ hai ghi một số nguyên \(T\) là số cạnh được xây dựng, theo sau bởi \(T\) số nguyên dương là chỉ số của các cạnh đó.

Mỗi lần nộp bài bạn có thể nộp một hoặc nhiều file đầu ra, bạn cần nén các file đầu ra này lại thành submission.zip để nộp. Ở mục chọn ngôn ngữ của trang nộp bài, chọn "Output".

Subtasks

  • Subtask 1 (\(5\) điểm): \(M \leq 20\);
  • Subtask 2 (\(5\) điểm): \(V^*=1, Q=N\);
  • Subtask 3 (\(10\) điểm): \(V^ * =1\);
  • Subtask 4 (\(15\) điểm): \(Q=N\);
  • Subtask 5 (\(65\) điểm): Không có ràng buộc gì thêm.

Examples

Test 1

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

Có ba cạnh được xây dựng là \(1, 5, 6\); đảm bảo đi lại giữa đỉnh \(1\)\(3\). Tổng giá trị sử dụng là \(2+1+4=7 > 6\). Tổng chi phí xây dựng là \(2+2+1 = 5\).

Scoring

Đối với mỗi test, bạn sẽ bị \(0\) điểm nếu đầu ra không hợp lệ; ngược lại, gọi \(C\) là tổng chi phí xây dựng các cạnh mà bạn tìm được, Ban tổ chức có một giá trị \(J\) đối với test đó:

  • Nếu \(\frac{C}{J} < 1\) bạn được 1 điểm cho test đó;
  • Nếu \(1 \leq \frac{C}{J} \leq 2\) bạn được \((\frac{2J-C}{J})^3 \times 100\%\) số điểm cho test đó;
  • Nếu \(\frac{C}{J} > 2\) bạn được 0 điểm cho test đó.
  • Trong quá trình thi, nếu bài làm của bạn tốt hơn của ban tổ chức ở một test nào đó, kết quả này sẽ được cập nhật cho ban tổ chức và dùng để chấm điểm cho các thí sinh khác. Việc cập nhật sẽ được thực hiện nhiều lần trong suốt quá trình thi mà không có thông báo gì thêm.

Điểm của lần nộp là tổng điểm đạt được của các test. Điểm của bài là điểm lớn nhất trong số các lần nộp.

...More

Heo đất

“Mẹ mua cho con heo đất, mẹ mua cho con heo đất í a í a, ngày hôm nay em vui lắm, cầm heo trên tay em ngắm, í à í a, làm sao cho heo mau lớn làm sao cho heo mau lớn í à í a.
Heo không đòi ăn cơm, heo không đòi ăn cám, heo chỉ cần em bé trên tay ầu ơ, em không thèm mua kem, em không thèm mua bánh, em để dành cho heo, em lì xì heo đất 200 mỗi ngày.
Này heo ơi! ngoan nhé! í a! này heo con ơi mau lớn í a”

Bắt đầu từ ngày hôm nay, mỗi ngày mẹ sẽ đưa cho em một số tờ tiền để nuôi heo. Cụ thể, ngày thứ \(𝑖\) mẹ sẽ đưa cho em \(𝑠_𝑖\) tờ với các mệnh giá: \(𝑐_{𝑖,1}, 𝑐_{𝑖,2}, . . , 𝑐_{𝑖,𝑠_𝑖}\). Em sẽ lựa chọn (hoặc không chọn) một tờ trong số các tờ mẹ đưa để “lì xì” cho heo với điều kiện: tờ tiền lựa chọn của những ngày sau có mệnh giá không nhỏ hơn tờ tiền đã lựa chọn của những ngày trước.

Yêu cầu: Hãy lựa chọn tờ tiền để heo mau lớn nhất.

Input

  • Dòng đầu chứa số \(𝑛\) là số ngày;
  • \(𝑛\) dòng sau, mỗi dòng mô tả các tờ tiền mà mẹ cho. Dòng thứ \(𝑖\) mô tả ngày thứ \(𝑖\), số đầu tiên của dòng là \(𝑠_𝑖\), tiếp theo là các số \(𝑐_{𝑖,1}, 𝑐_{𝑖,2}, . . , 𝑐_{𝑖,𝑠_𝑖}\) (\(𝑐_{𝑖,𝑗} \leq 10^6\))

Output

  • Gồm một dòng chứa tổng số tiền lớn nhất có thể chọn được để nuôi heo.

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(𝑛 \leq 20\) và các \(𝑠_𝑖\) bằng 1;
  • Subtask \(1\) (\(25\%\) số điểm): \(𝑛 \leq 10^5\) và các \(𝑠_𝑖\) bằng 1;
  • Subtask \(1\) (\(25\%\) số điểm): \(𝑛 \leq 1000\)\(𝑠_𝑖 \leq 50\);
  • Subtask \(1\) (\(25\%\) số điểm): \(𝑛 \leq 1000\)\(𝑠_1 + 𝑠_2 + ⋯ + 𝑠_𝑛 \leq 10^6\).

Example

Test 1

Input
 6
3 1 1 1
2 2 3
2 2 3
1 1
2 2 2
2 2 2 
Output
9
...More