USACO 2023 - Tháng 2 - Hạng Vàng

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 USACO 2023 February Contest, Gold, Equal Sum Subarrays 100 (p) 3.0s 256M
2 USACO 2023 February Contest, Gold, Fertilizing Pastures 100 (p) 2.0s 256M
3 USACO 2023 February Contest, Gold, Piling Papers 100 (p) 2.0s 256M

1. USACO 2023 February Contest, Gold, Equal Sum Subarrays

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

FJ đưa cho Bessie một mảng \(a\) có độ dài \(N(2\le N \le 500, -10^{15}\le a_i\le10^{15})\) với tất cả \(\frac{N*(N+1)}{2}\) dãy con liên tiếp đều có tổng đôi một khác nhau. Với mỗi chỉ số \(i\in[1,N]\) , hãy giúp Bessie tính lượng tối thiểu cần thay đổi với \(a_i\) sao cho có hai dãy con liền tiếp khác nhau có tổng bằng nhau.

Input

  • Dòng đầu tiên chứa số \(N\).
  • Dòng tiếp theo chứa \(a_1,a_2,...,a_N\)

Output

\(N\) dòng, dòng thứ \(i\) chứa lượng tối thiểu cần thay đổi với \(a_i\).

Scoring

  • Subtask \(1\): \(N \leq 40\)
  • Subtask \(2\): \(N \leq 80\)
  • Subtask \(3\): \(N \leq 200\)
  • Subtask \(4\): Không có điều kiện gì thêm.

Example

Test 1

Input
2
2 -3
Output
2
3        
Note

Giảm \(a_1\) đi \(2\) sẽ có \(a_1+a_2=a_2\). Tương tự, tăng \(a_2\) lên \(3\) sẽ có \(a_1+a_2=a_1\).

Test 2

Input
3
3 -10 4    
Output
1
6
1
Note

Giảm \(a_1\) hoặc \(a_3\) đi \(1\) sẽ có \(a_1=a_3\). Tăng \(a_2\) lên \(6\) sẽ có \(a_1+a_2+a_3=a_1\).

2. USACO 2023 February Contest, Gold, Fertilizing Pastures

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

\(N\) đồng cỏ \((2\leq N\leq2*10^5)\), được nối với nhau bởi \(N-1\) con đường, sao cho chúng tạo thành một cây. Mỗi con đường mất \(1\) giây để vượt qua. Mỗi đồng cỏ ban đầu không có cỏ và cỏ của đồng cỏ thứ \(i\) phát triển với tốc độ \(a_i(1\leq a_i\leq10^8)\) đơn vị mỗi giây. Lúc đầu, nông dân John ở đồng cỏ 1 và cần phải lái xe vòng quanh để bón phân cho cỏ ở mọi đồng cỏ. Nếu anh ta đến thăm một đồng cỏ có \(x\) đơn vị cỏ thì sẽ cần \(x\) lượng phân bón. Đồng cỏ chỉ cần được bón phân trong lần đầu tiên đến và việc bón phân không mất thời gian.

Đầu vào chứa tham số \(T\in{0,1}\):

  • Nếu \(T=0\), nông dân John phải kết thúc ở đồng cỏ \(1\).
  • Nếu \(T=1\), nông dân John có thể kết thúc ở bất kỳ đồng cỏ nào.

Tính thời gian tối thiểu cần thiết để bón phân cho tất cả đồng cỏ và lượng phân bón tối thiểu cần với khoảng thời gian đó.

Input

  • Dòng đầu tiên chứa số \(N\)\(T\).
  • Với mỗi dòng \(i\) từ \(2\) đến \(N\), có hai số \(p_i\)\(a_i\) miêu tả một con đường. Đảm bảo rằng \(1 \leq p_i < i\).

Output

Lượng thời gian tối thiểu và lượng phân bón tối thiểu, cách nhau bằng khoảng trống.

Scoring

  • Subtask \(1\): \(T=0\)
  • Subtask \(2\): \(T=1\)
  • Subtask \(3\): Không có đồng cỏ nào nối với hơn \(3\) con đường.

Example

Test 1

Input
5 0
1 1
1 2
3 1
3 4
Output
8 21      
Note

Lộ trình tối ưu cho như sau:

  • Tại thời điểm \(1\), di chuyển đến đỉnh \(3\), lúc này có \(1*2=2\) cỏ nên cần \(2\) phân bón.
  • Tại thời điểm \(2\), di chuyển đến đỉnh \(5\), lúc này có \(2*4=8\) cỏ nên cần \(8\) phân bón.
  • Tại thời điểm \(3\), di chuyển đến đỉnh \(3\) đã được bón phân.
  • Tại thời điểm \(4\), di chuyển đến đỉnh \(4\), lúc này có \(4*1=4\) cỏ nên cần \(4\) phân bón.
  • Tại thời điểm \(5\), di chuyển đến đỉnh \(3\) đã được bón phân.
  • Tại thời điểm \(6\), di chuyển đến đỉnh \(1\).
  • Tại thời điểm \(7\), di chuyển đến đỉnh \(2\), lúc này có \(7*1=4\) cỏ nên cần \(7\) phân bón.
  • Tại thời điểm \(8\), di chuyển đến đỉnh \(1\).

Lộ trình này mất \(8\) giây và sử dụng \(2+8+4+7=21\) phân bón. Có thể chỉ ra rằng \(8\) giây là khoảng thời gian ít nhất cần và \(21\) là lượng phân bón ít nhất cần cho bất kỳ tuyến đường nào quay trở lại nút \(1\) và mất \(8\) giây.

Test 2

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

Lộ trình tối ưu cho như sau:

  • Tại thời điểm \(1\), di chuyển đến đỉnh \(2\), lúc này có \(1*1=2\) cỏ nên cần \(2\) phân bón.
  • Tại thời điểm \(2\), di chuyển đến đỉnh \(1\).
  • Tại thời điểm \(3\), di chuyển đến đỉnh \(3\), lúc này có \(3*2=6\) cỏ nên cần \(6\) phân bón.
  • Tại thời điểm \(4\), di chuyển đến đỉnh \(5\), lúc này có \(4*4=16\) cỏ nên cần \(16\) phân bón.
  • Tại thời điểm \(5\), di chuyển đến đỉnh \(3\) đã được bón phân.
  • Tại thời điểm \(6\), di chuyển đến đỉnh \(4\), lúc này có \(6*1=4\) cỏ nên cần \(6\) phân bón.

Lộ trình này mất \(6\) giây và sử dụng \(1+6+16+6=29\) phân bón. Có thể chỉ ra rằng \(6\) giây là khoảng thời gian ít nhất cần và \(29\) là lượng phân bón ít nhất cần cho bất kỳ tuyến đường mất \(6\) giây.

3. USACO 2023 February Contest, Gold, Piling Papers

Đ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 viết \(N(1 \leq N\leq300)\) chữ số lên một vài mảnh giấy. Với mỗi \(i\in[1,N]\), mảnh giấy thứ \(i\) chứa chữ số \(a_i\) \((1\leq a_i \leq 9)\).

Những con bò có hai số nguyên yêu thích \(A\)\(B (1\leq A\leq B<10^{18} )\) và muốn bạn trả lời \(Q\) truy vấn \((1\leq Q\leq5*10^4)\). Đối với truy vấn thứ i, đám bò sẽ đi qua các mảnh giấy \(l_i…r_i (1\leq l_i\leq r_i\leq N )\) từ trái sang phải, duy trì một chồng giấy. Đối với mỗi mảnh giấy, chúng sẽ thêm nó vào đầu chồng, vào cuối chồng hoặc không thêm vào. Cuối cùng, chúng sẽ đọc các mảnh giấy trong chồng từ trên xuống dưới, tạo thành một số nguyên. Trên tất cả \(3^{r_i−l_i+1}\) cách để chúng đưa ra lựa chọn, hãy đếm số cách tạo ra số nằm trong đoạn \([A,B]\) in ra số này với \(modulo\) \(10^9+7\).

Input

  • Dòng đầu tiên chứa ba số \(N\), \(A\)\(B\).
  • Dòng thứ hai chứa \(a_1,a_2,..,a_N\).
  • Dòng thứ ba chứa số \(Q\) - số truy vấn.
  • \(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(l_i\)\(r_i\).

Output

In ra kết quả mỗi truy vấn trên \(1\) dòng.

Scoring

  • Subtask \(1\): \(B < 100\)
  • Subtask \(2\): \(A=B\)
  • Subtask \(3\): Không có điều kiện gì thêm.

Example

Test 1

Input
5 13 327
1 2 3 4 5
3
1 2
1 3
2 5
Output
2
18
34
Note

Với truy vấn đầu tiên, có \(9\) cách để tạo ra số trong khoảng \([1,2]\):

  • Bessie có thể bỏ qua \(1\) rồi bỏ qua \(2\), được \(0\).
  • Bessie có thể bỏ qua \(1\) rồi thêm \(2\) vào đầu ngăn xếp, được \(2\).
  • Bessie có thể bỏ qua \(1\) rồi thêm \(2\) vào cuối ngăn xếp, được \(2\).
  • Bessie có thể thêm \(1\) vào đầu ngăn xếp rồi bỏ qua \(2\) , được \(1\).
  • Bessie có thể thêm \(1\) vào đầu ngăn xếp, sau đó thêm \(2\) vào đầu ngăn xếp, được \(21\).
  • Bessie có thể thêm \(1\) vào đầu ngăn xếp rồi thêm \(2\) vào cuối ngăn xếp, được \(12\).
  • Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi bỏ qua \(2\) , được \(1\).
  • Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi thêm \(2\) vào đầu ngăn xếp, được \(21\).
  • Bessie có thể thêm \(1\) vào cuối ngăn xếp rồi thêm \(2\) vào cuối ngăn xếp, được \(12\).

Chỉ có \(2\) cách tạo ra \(21\) - nằm trong khoảng từ \(13\) đến \(327\), vì vậy câu trả lời là \(2\).