USACO 2022 - Tháng 12 - Hạng Bạc

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 USACO 2022 December Contest, Silver, Barn Tree 100 (p) 4.0s 512M
2 USACO 2022 December Contest, Silver, Circular Barn 100 (p) 2.0s 256M
3 USACO 2022 December Contest, Silver, Range Reconstruction 100 (p) 2.0s 256M

1. USACO 2022 December Contest, Silver, Barn Tree

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

Lưu ý: Giới hạn thời gian là 4 giây. Giới hạn bộ nhớ là 512MB.

Nông dân John có \(N\) chuồng bò \((2 \le N \le 2 \times 10^5)\) được đánh số \(1 \dots N\). Có \(N - 1\) con đường hai chiều nối các cặp chuồng bò, và từ một chuồng bò có thể đi đến \(N - 1\) chuồng còn lại. Hiện tại, chuồng \(j\)\(h_j\) kiện có khô \((1 \le h_j \le 10^9)\).

Để làm hài lòng lũ bò, nông dân John muốn di chuyển các kiện này sao cho số lượng cỏ khô mà các chú bò có là bằng nhau. Bác ta có thể chọn \(1\) cặp chuồng bất kì có đường nối giữa chúng và ra lệnh cho cấp dưới di chuyển các kiện hàng với số lượng nguyên dương bất kì bé hơn hoặc bằng so với số kiện cỏ hiện tại đang có trong chuồng sang chuồng còn lại.

Hãy xác định dãy các mệnh lệnh để nông dân John có thể hoàn thành nhiệm vụ sao cho độ dài dãy là bé nhất. Dữ liệu đảm bảo thấy rằng đáp án luôn tồn tại.

Input

  • Dòng đầu tiên là số \(N\).
  • Dòng thứ hai là \(N\) số \(h_1, h_2, \dots, h_N\).
  • \(N - 1\) dòng cuối cùng là các cặp \(u_i, v_i\) thoả mãn có một đường nối giữa chuồng \(u_i\) và chuồng \(v_i\).

Output

  • Dòng đầu tiên là số lượng mệnh lệnh ít nhất bác John cần thực hiện (Gọi là \(T\)).
  • Trong \(T\) dòng tiếp theo, dòng thứ \(i\) là bộ ba số \(a_i, b_i, c_i\), trong đó: \(a_i\) là chuồng lấy kiện cỏ, \(b_i\) là chuồng các kiện cỏ được chuyển đến, \(c_i\) là số lượng kiện cỏ được lấy.

Scoring

  • Subtask \(1\): \(N \le 5000\).
  • Subtask \(2\): \(v_i = u_i + 1 \forall i\).
  • Subtask \(3\): Không còn ràng buộc.

Test 1

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

Trong ví dụ này, có tổng cộng \(12\) kiện cỏ và \(4\) chuồng, nghĩa là mỗi chuồng sẽ phải có \(3\) kiện cỏ. Dãy các mệnh lệnh trong Output có thể được giải thích như sau:

  • Chuyển \(1\) kiện cỏ từ chuồng \(3\) sang chuồng \(2\).
  • Chuyển \(2\) kiện cỏ từ chuồng \(4\) sang chuồng \(2\).
  • Chuyển \(1\) kiện cỏ từ chuồng \(2\) sang chuồng \(1\).

2. USACO 2022 December Contest, Silver, Circular Barn

Đ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 và kẻ thù không đội trời chung của bác - Nông dân Nhoj đang chơi một trò chơi trong chuồng bò được xây thành đường tròn. Có \(N\) \((1 \le N \le 10^5)\) căn phòng trong chuồng, phòng thứ \(i\) ban đầu có \(a_i\) con bò \((1 \le a_i \le 5 \times 10^6)\). Trò chơi diễn ra như sau:

  • Cả hai nông dân đều ở trong cùng một phòng. Sau khi vào phòng, mỗi nông dân sẽ chơi chính xác một lượt, trong đó nông dân John đi trước. Ban đầu cả \(2\) nông dân ở sẽ vào phòng \(1\).
  • Nếu như không có con bò nào trong phòng, người nào đi lượt này sẽ thua. Ngược lại, người chơi có thể chọn một số nguyên \(P\) trong đó \(P\) chỉ có thể là \(1\) hoặc là một số nguyên tố không vượt quá số lượng bò hiện tại trong phòng và đuổi \(P\) chú bò này ra ngoài.
  • Sau khi cả hai đều thực hiện lượt chơi, họ sẽ sang phòng tiếp theo (phòng \(i\) sang phòng \(i + 1\), phòng \(N\) sang phòng \(1\)).

Hãy tìm ra người chiến thắng nếu cả \(2\) chơi tối ưu.

Input

  • Input có \(T\) test cases. Dòng đầu tiên là số \(T\) \((1 \le T \le 1000)\).
  • Mỗi test sẽ gồm một dòng chứa số \(N\) theo sau bởi \(N\) số \(a_1, a_2, \dots, a_N\).
  • Dữ liệu đảm bảo tổng \(N\) trong tất cả các test không vượt quá \(2 \times 10^5\).

Output

  • Với mỗi test case, xuất ra tên của người thắng cuộc "Farmer John" hoặc "Farmer Nhoj".

Scoring

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

Test 1

Input
5
1
4
1
9
2
2 3
2
7 10
3
4 9 4
Output
Farmer Nhoj
Farmer John
Farmer John
Farmer John
Farmer Nhoj
Note
  • Trong test đầu tiên, nông dân John có thể đuổi \(1\), \(2\) hoặc \(3\) con bò ra khỏi phòng \(1\). Dù thế nào thì nông dân Nhoj chỉ cần đuổi tất cả con bò còn lại trong phòng thì sẽ luôn thắng.
  • Trong test thứ hai, FJ có thể đuổi \(5\) con bò, bắt buộc Nhoj phải chơi ở trạng thái chỉ có \(4\) con bò còn lại trong phòng, và sẽ quay về test đầu tiên, John sẽ luôn thắng.
  • Trong test thứ ba và bốn, FJ có thể đuổi hết bò ở phòng đầu tiên và thắng ngay tức thì.
  • Trong test cuối cùng, FJ có thể đuổi \(1\), \(2\) hoặc \(3\) con bò ở phòng đầu tiên, sau đó nông dân Nhoj sẽ đuổi các con bò còn lại. Khi đi hết một vòng và quay trở lại phòng đầu tiên, FJ sẽ thua.

3. USACO 2022 December Contest, Silver, Range Reconstruction

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

Bessie có một dãy \(a_1, a_2, \dots, a_N\), trong đó \(1 \le N \le 300\)\(0 \le a_i \le 10^9\) với mọi \(i\). Cô nàng sẽ không nói thẳng cho bạn dãy \(a\) mà lại thích vòng vo Tam Quốc, chỉ nói cho bạn khoảng xác định của dãy. Nghĩa là, với mỗi cặp chỉ số \(i \le j\), Bessie sẽ nói cho bạn \(r_{i, j} = \max a[i \dots j] - \min a[i \dots j]\). Cho các giá trị của \(r\), hãy xây dựng lại một dãy mà có thể là dãy ban đầu của Bessie. Các giá trị trong dãy phải nằm trong đoạn \([-10^9, 10^9]\).

Input

  • Dòng đầu tiên là số \(N\).
  • \(N\) dòng tiếp theo, dòng thứ \(i\) là các số \(r_{i, i}, r_{i, i + 1}, \dots r_{i, n}\).
  • Dữ liệu đảm bảo luôn có dãy \(a\) với các giá trị nằm trong đoạn \([0, 10^9]\) thoả mãn điều kiện của test.

Output

  • In ra một dòng là \(N\) số nguyên \(b_1, b_2, \dots, b_N \in [-10^9, 10^9]\) thoả mãn \(r_{i, j} = \max a[i \dots j] - \min a[i \dots j] \forall i \le j\).

Scoring

  • Subtask \(1\): \(r_{1, N} \le 1\).
  • Subtask \(2\): \(r_{i, i + 1} = 1 \forall 1 \le i \le N\).
  • Subtask \(3\): Không có ràng buộc thêm.

Test 1

Input
3
0 2 2
0 1
0
Output
1 3 2
Note

Ví dụ \(r_{1, 3} = \max a[1 \dots 3] - \min a[1 \dots 3] = 3 - 1 = 2\).

Test 2

Input
3
0 1 1
0 0
0
Output
0 1 1
Note

Test này thoả mãn ràng buộc của subtask \(1\).

Test 3

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

Test này thoả mãn ràng buộc của subtask \(2\).

Test 4

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