USACO 2024 - Tháng 1 - Hạng Bạc

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 USACO 2024 January Contest, Silver, Cowmpetency 100 (p) 2.0s 256M
2 USACO 2024 January Contest, Silver, Potion Farming 100 (p) 2.0s 256M
3 USACO 2024 - Cowlendar 100 (p) 4.0s 512M

1. USACO 2024 January Contest, Silver, Cowmpetency

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

Nông dân John đang tuyển thêm bò đầu đàn cho đàn bò của mình. Sau khi phỏng vấn, anh ta chấm điểm cho những con bò ứng viên theo thang điểm gọi là "cowmpetency", hay còn gọi là "độ bảnh bò" cho mỗi con bò. Số điểm này dao động từ \(1\) đến \(C\) (\(1 \leq C \leq 10^9\)), với \(C\) là độ bảnh mà John mong muốn con bò đầu đàn của mình có được.

Do đã mệt mỏi sau khi phải phỏng vấn \(N\) con bò được đánh số từ \(1\) đến \(N\) (\(2 \leq N \leq 10^9\)), anh John đã quên mất độ bảnh của những con bò ứng viên. Tuy nhiên, anh vẫn nhớ được \(Q\) (\(1 \leq Q \leq \text{ min(N - 1,100)}\)) cặp số (\(a_1, a_h\)), trong đó bò \(h_1\) là con bò bảnh nhất trong dãy từ bò 1 đến bò \(a_i\) (vậy \(1 \leq a_i < h_i \leq N\)).

Anh John cho bạn biết bảng điểm của những con bò dưới dạng một dãy \(c_1, \ldots, c_N\) (với \(c_i\) = 0 nghĩa là anh John đã quên mất độ bảnh bò của con bò có số thứ tự \(i\)). Nhiệm vụ của bạn là giúp anh John nhớ lại bảng điểm nhỏ nhất theo thứ tự từ điển bằng những thông tin đã có. Biết một dãy điểm sẽ nhỏ hơn một dãy khác nếu tại điểm khác biệt nhỏ nhất có của dãy này nhỏ hơn.

Anh John đã phỏng vấn tất cả \(T\) (\(1 \leq T \leq 20\)) ngày và cần bạn giúp đỡ ngay lạp tức. Dữ liệu đảm bảo tổng số bò của cả \(T\) ngày không quá \(3 \times 10^5\).

Input

  • Dòng đầu tiên chứa \(T\) là số câu hỏi anh John đặt ra cho bạn.
  • Mỗi câu hỏi bao gồm:
    • Dòng đầu tiên gồm \(N\), \(Q\)\(C\).
    • Dòng tiếp theo gồm \(c_1, \ldots, c_N\) là bảng điểm của những con bò
    • Cuối cùng là \(Q\) dòng, mỗi dòng chứa một cặp (\(a_j, h_j\)). Dữ liệu đảm bảo mỗi \(a_j\) đều độc lập.

Output

  • Gồm \(T\) dòng, mỗi dòng chứa kết quả của một bài toán, hoặc -1 nếu không có kết quả nào phù hợp.

Scoring

  • Subtask \(1\): \(N \leq 10\)\(Q,C \leq 4\)
  • Subtask \(2\): \(N \leq 1000\)
  • Subtask \(3\): Không có ràng buộc gì thêm.

Test 1

Input
1
7 3 5
1 0 2 3 0 4 0
1 2
3 4
4 5
Output
1 2 2 3 4 4 1
Note

Chúng ta có thể thấy rằng kết quả thỏa mãn tất cả các cặp mà nông dân John nhớ.

  • max(\(c_1\)) = 1, \(c_2=2\)\(1<2\) nên cặp đầu tiên được thỏa mãn.
  • max(\(c_1,c_2,c_3\)) = 2, \(c_4 = 3\)\(2<3\) nên cặp thứ hai được thỏa mãn.
  • max(\(c_1,c_2,c_3,c_4\)) = 3, \(c5 = 4\)\(3<4\) nên cặp thứ ba được thỏa mãn.

Có nhiều dãy số khác phù hợp với trí nhớ của Farmer John, chẳng hạn như:
1 2 2 3 5 4 1
1 2 2 3 4 4 5

Tuy nhiên, kết quả đưa ra là nhỏ nhất theo thứ tự từ điển.

Test 2

Input
5
7 6 10
0 0 0 0 0 0 0
1 2
2 3
3 4
4 5
5 6
6 7
8 4 9
0 0 0 0 1 6 0 6
1 3
6 7
4 7
2 3
2 1 1
0 0
1 2
10 4 10
1 2 0 2 1 5 8 6 0 3
4 7
1 2
5 7
3 7
10 2 8
1 0 0 0 0 5 7 0 0 0
4 6
6 9
Output
1 2 3 4 5 6 7
1 1 2 6 1 6 7 6
-1
1 2 5 2 1 5 8 6 1 3
-1
Note

Trong test case số 3, vì \(C=1\), dãy số duy nhất có thể là 1 1. Tuy nhiên, trong trường hợp này, bò 2 không có điểm số lớn hơn bò 1, vì vậy chúng ta không thể thỏa mãn điều kiện.
Trong test case số 5, \(a_1\)\(h_1\) cho chúng ta biết rằng bò 6 là bò đầu tiên có điểm số lớn hơn các bò từ 1 đến 4. Do đó, điểm số lớn nhất cho các bò từ 1 đến 6 là của bò 6: 5. Vì bò 7 có điểm số 7, bò 7 là bò đầu tiên có điểm số lớn hơn các bò từ 1 đến 6. Do đó, phát biểu thứ hai rằng bò 9 là bò đầu tiên có điểm số lớn hơn các bò từ 1 đến 6 không thể đúng.

2. USACO 2024 January Contest, Silver, Potion Farming

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

Một tựa game mới ra đang làm bạn say mê. Trong game, bạn phải đi thu thập những bình thuốc tăng sức mạnh để đánh bại con boss ẩn "Bò thần"

Bạn đã sử dụng kĩ năng dò đường siêu hiếm và đã có được bản đồ của game dưới dạng một dãy \(N\) căn phòng (\(2 \leq N \leq 10^5\)) được đánh số từ \(1\) đến \(N\) và được kết nối bởi \(N - 1\) cạnh tạo thành một cây.

Bạn có thể sử dụng kĩ năng "bước nhảy không gian" để di chuyển giữa các phòng, trong đó mỗi bước nhảy là một lần dịch chuyển từ phòng bất kì đến phòng số 1. Sau khi hoàn thành một lần khám phá bạn sẽ dịch chuyển thẳng về phòng số 1 để tiết kiệm thời gian. Kĩ năng này tuy mạnh nhưng bị giới hạn số lần dùng, nên bạn muốn hoàn thành map và mở khóa cánh cửa đến boss sau khi dịch chuyển ít nhất có thể. Map sẽ được clear nếu bạn đi qua một căn phòng ít nhất một lần.

Cùng với đó, để nhân vật mạnh nhất có thể, bạn cần phải thu thập càng nhiều potion càng tốt. Biết mỗi lần bạn dịch chuyển, map sẽ được làm mới và một lọ potion sẽ xuất hiện ở một căn phòng ngẫu nhiên và bạn chỉ có thể lấy được nó ở lần khám phá tiếp theo, nếu không nó sẽ biến mất.

Bằng cách "ghé thăm" thư mục của game, bạn đã "tình cờ" biết được vị trí mà những potion sẽ xuất hiện trong \(N\) lần dịch chuyển tiếp theo của bạn. Hãy tính toán xem nếu bạn clear map với số lần dịch chuyển ít nhất thì sẽ thu thập được số lượng potion tối đã là bao nhiêu.

Input:

  • Dòng đầu tiên chứa một số nguyên \(N\), đại diện cho số phòng có trên bản đồ.
  • Dòng tiếp theo chứa \(N\) số nguyên cách nhau bởi dấu cách \(p_1, p_2, \ldots, p_N\), với \(p_i\) là phòng mà potion sẽ xuất hiện trong lần dịch chuyển thứ \(i\).
  • \(N-1\) dòng tiếp theo chứa 2 số nguyên \(a\)\(b\) (\(1 \leq a,b \leq N\)) mô tả các con đường nối giữa các phòng. Dữ liệu đảm bảo những con đường này luôn tạo thành một cây.

Output:

  • Chứa một số nguyên duy nhất là số lượng potion tối đa bạn có thể lấy được sau khi clear map nhanh nhất có thể.

Scoring:

  • Subtask \(1\): \(N \leq 1000\).
  • Subtask \(2\): Không có ràng buộc gì thêm.

Test 1

Input
5
5 4 3 2 1
1 2
1 3
3 4
3 5
Output
2
Note
  • Trong trường hợp này, số lượng chuyến đi tối thiểu cần thiết để hoàn thành bản đồ là 3. Một kế hoạch tối ưu có thể thu thập hai potion là:

    • Chuyến đi 1: 1 \(\to\) 3 \(\to\) 5 (Lấy potion tại phòng 5)
    • Chuyến đi 2: 1 \(\to\) 3 \(\to\) 4 (Lấy potion tại phòng 4)
    • Chuyến đi 3: 1 \(\to\) 2 (Buộc phải hoàn thành bản đồ và bỏ qua potion tại phòng 3)
  • Hoặc:

    • Chuyến đi 1: 1 \(\to\) 2 (không nhặt potion)
    • Chuyến đi 2: 1 \(\to\) 3 \(\to\) 4 (nhặt potion phòng 4)
    • Chuyến đi 3: 1 \(\to\) 3 \(\to\) 4(nhặt potion phòng 3)

3. USACO 2024 - Cowlendar

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

Bessie tỉnh dậy trên một hành tinh xa lạ. Trên hành tinh này có \(N\) (\(1\le N\le 10^4\)) tháng, lần lượt có \(a_1,\ldots,a_N\) ngày (\(1\leq a_i\leq 4\cdot 10^9\), mọi \(a_i\) đều là số nguyên). Ngoài ra còn có tuần, mỗi tuần dài \(L\) ngày, trong đó \(L\) là một số nguyên dương. Điều thú vị là Bessie biết rằng:

  • Với giá trị \(L\) đúng, mỗi tháng dài ít nhất \(4\) tuần.
  • Với giá trị \(L\) đúng, có nhiều nhất \(3\) giá trị phân biệt trong các số \(a_i\bmod L\).

Không may, Bessie đã quên mất \(L\)! Hãy giúp cô bằng cách in tổng của tất cả các giá trị \(L\) có thể.

Lưu ý rằng các số nguyên lớn trong bài có thể đòi hỏi kiểu số nguyên 64 bit (ví dụ long long trong C/C++).

Dữ liệu vào

Dòng đầu chứa một số nguyên \(N\). Dòng thứ hai chứa \(N\) số nguyên cách nhau bởi dấu cách, \(a_1,\ldots,a_N\).

Dữ liệu ra

In một số nguyên: tổng của tất cả các giá trị \(L\) có thể.

Ví dụ

Ví dụ 1

Input
12
31 28 31 30 31 30 31 31 30 31 30 31
Output
28
Giải thích

Các giá trị \(L\) có thể là 1, 2, 3, 4, 5, 6 và 7. Ví dụ, \(L=7\) hợp lệ vì mỗi tháng dài ít nhất \(4\cdot 7=28\) ngày, và số ngày của mỗi tháng đồng dư với 0, 2 hoặc 3 theo modulo 7.

Ví dụ 2

Input
4
31 35 28 29
Output
23
Giải thích

Các giá trị \(L\) có thể là 1, 2, 3, 4, 6 và 7. Ví dụ, \(L=6\) hợp lệ vì mỗi tháng dài ít nhất \(4\cdot 6=24\) ngày, và số ngày của mỗi tháng đồng dư với 1, 4 hoặc 5 theo modulo 6.

Phân nhóm

  • Các test 3-4: \(1 \leq a_i \leq 10^6\).
  • Các test 5-14: Không có ràng buộc bổ sung.

Nguồn

USACO 2024 January Contest, Silver — Cowlendar: https://usaco.org/index.php?page=viewproblem2&cpid=1376

Tác giả đề: Brandon Wang