USACO 2023 US Open Contest, Bronze, Moo Language

Xem PDF

Điểm: 1000 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Nông dân John rất thích thú trong việc tương tác với các chú bò của mình, vì vậy bác ta quyết định học ngôn ngữ Moo (loại ngôn ngữ chỉ bò mới hiểu).

Ngôn ngữ Moo có đôi chút giống giống với tiếng Anh nhưng tối giản hơn. Chỉ có \(4\) loại từ: danh từ, ngoại động từ, nội động từ và liên từ. Mỗi \(2\) từ liên tiếp phải được ngăn cách bằng một khoảng trắng. Và cũng chỉ có \(2\) loại dấu câu: dấu phẩy và dấu chấm câu. Khi câu có dấu chấm hoặc dấu phẩy thì các dấu này được đặt ngay đằng sau một từ theo sau là một dấu khoảng trắng nếu có một từ mới xuất hiện đằng sau (bạn có thể xem cách tác giả viết trình bày đề bài để hiểu nhé <333).

Một câu đơn trong ngôn ngữ này tuân thủ một trong những dạng sau:

  • Dạng \(1\): danh từ + ngoại động từ.
  • Dạng \(2\): danh từ + nội động từ + một số danh từ. Cụ thể hơn, cần có ít nhất \(1\) danh từ theo sau nội động từ, và mỗi danh từ được ngăn cách nhau bằng một dấu phẩy.

Hai câu đơn có thể hợp lại với nhau để trở thành một câu ghép nếu có một liên từ nối giữa chúng. Câu ghép thu được sẽ không thể kết hợp thêm với một câu đơn hoặc một câu ghép khác. Tất cả câu đơn (hoặc câu ghép) cần được kết thúc bằng một dấu chấm câu.

Nông dân John có ngân hàng từ gồm \(N\) từ, \(C\) dấu phẩy, \(P\) dấu chấm câu \((1 \le P, C \le N \le 10^3)\). Bác chỉ có thể sử dụng từ và dấu câu không quá số lần xuất hiện của chúng trong ngân hàng từ của mình. Hãy giúp bác John xuất ra một dãy các câu chứa nhiều từ nhất có thể.

Mỗi input sẽ bao gồm \(T\) \((1 \le T \le 100)\) test độc lập.

Input

Dòng đầu tiên chứa số \(T\) là số lượng test. Mỗi test sẽ được xác định như sau:

  • Dòng đầu tiên gồm \(3\) số nguyên \(N\), \(C\), và \(P\) theo thứ tự.
  • \(N\) dòng tiếp theo, mỗi dòng gồm \(2\) xâu kí tự. Xâu đầu tiên là từ mà nông dân John có thể dùng (gồm ít nhất \(1\) và nhiều nhất \(10\) chữ cái in thường). Xâu thứ hai sẽ là một trong các xâu sau: "noun" (danh từ), "transitive-verb" (ngoại động từ), "intransitive-verb" (nội động từ), hoặc "conjunction" (liên từ) cho biết loại từ của từ này. Một từ có thể xuất hiện nhiều lần trong ngân hàng từ của bác John, nhưng mọi lần xuất hiện đều sẽ cùng loại từ.

Output

  • Dòng đầu tiên in ra số lượng từ tối đa được dùng
  • Dòng thứ hai in ra dãy bất kì các câu văn tạo được với số lượng từ sử dụng là tối đa. Mọi câu văn hợp lệ đều được chấp nhận.

Note: Chương trình chấm rất nhạy với khoảng trắng, hãy chắc chắn rằng không in ra bất kì khoảng trắng thừa nào, nhất là ở cuối mỗi dòng.

Scoring

  • Subtask \(1\): \(N \le 10\).
  • Subtask \(2\): \(N \le 100\).
  • Subtask \(3\): \(N \le 1000\).
  • Subtask \(4\): Không có ngoại động từ.
  • Subtask \(5\): Không có nội động từ.
  • Subtask \(6\): Không có liên từ.

Test 1

Input
3
1 1 1
bessie noun
10 5 4
bessie noun
taught transitive-verb
flew intransitive-verb
elsie noun
farmer noun
john noun
and conjunction
and conjunction
nhoj noun
mooed intransitive-verb
24 5 4
but conjunction
bessie noun
taught transitive-verb
flew intransitive-verb
elsie noun
farmer noun
john noun
and conjunction
and conjunction
nhoj noun
mooed intransitive-verb
bob noun
impressed transitive-verb
cow noun
impressed transitive-verb
leaped intransitive-verb
elsie noun
bella noun
buttercup noun
pushed transitive-verb
mooed intransitive-verb
envy noun
john noun
nhoj noun
Output
0

9
nhoj mooed. farmer taught elsie, bessie and john flew.
23
nhoj mooed. nhoj impressed john, farmer, elsie, bessie and cow impressed bob. bella pushed elsie and buttercup flew. envy mooed but john leaped.
Note

Trong test đầu tiên, không thể tạo câu chỉ với \(1\) danh từ. Trong test thứ hai, có thể dựng một dãy các câu sử dụng tất cả các từ trong ngân hàng từ trừ một từ.


Bình luận

Không có bình luận nào.