CSES - Knuth Division | Phép chia Knuth
Cho một mảng gồm \(n\) số nguyên, nhiệm vụ của bạn là chia mảng thành \(n\) mảng con, mỗi mảng con có duy nhất một phần tử.
Ở mỗi lần thực hiện, bạn có thể chọn một mảng con bất kì và chia nó thành hai mảng con. Chi phí cho mỗi lần thực hiện là tổng các giá trị trong mảng con đã chọn.
Tổng chi phí tối thiểu là bao nhiêu nếu bạn thực hiện một cách tối ưu?
Input
Dòng đầu vào đầu tiên có một số nguyên \(n\): kích thước mảng. Các phần tử của mảng được đánh số \(1, 2, \ldots, n\).
Dòng thứ hai gồm \(n\) số nguyên \(x_1, x_2, \ldots, x_n\) : các giá trị của mảng
Output
In ra một số nguyên: tổng chi phí tối thiểu.
Constraints
- \(1 \leq n \leq 5000\)
- \(1 \leq x_i \leq 10 ^ 9\)
Example
Sample input
5
2 7 3 2 5
Sample output
43
gcd( a -> b)
Bạn được cho 2 số nguyên \(a, b\).
Hãy tính ước chung lớn nhất của các số từ \(a\) đến \(b\).
Input
- \(a, b (1 \leq a \leq b \leq 10^{100})\)
Output
- Ước chung lớn nhất \((a, a + 1, ... , b)\)
Example
Test 1
Input
2 4
Output
1
Note
Ước chung lơn nhất của \(3\) số \((2, 3, 4)\) là \(1\)
Chơi cá độ (C div 1)
Sau một chuỗi thua cá cược khi đặt hết niềm tin vào Hà Lan, Bồ Đào Nha, Pháp, Đức ... thì giờ đây algorit đã gần như mất hết tất cả, từ nhà cửa, xe cộ, sổ đỏ, tiền bạc, thậm chí cả người yêu cũng đi theo thằng khác. Có thể nói algorit bây giờ chỉ còn đúng cái nịt, nhưng với châm ngôn là còn thở còn gỡ, lần này algorit sẽ đánh cược cái nịt cuối cùng vào trận bóng tối nay.
Để khả năng cá cược thành công cao hơn thì algorit phải tính ra tỉ lệ tỉ số. Ban đầu ta có một dãy số gồm \(N\) phần tử được đánh số theo thứ tự từ \(1\) đến \(N\). Bên cạnh đó ta cũng được cung cấp một số nguyên dương \(K\leq N\).
Thực hiện lần lượt các bước sau:
-
Bước 1 : Khởi tạo giá trị \(Sum := 0\)
-
Bước 2 : Chọn ra một tập hợp mới, không được trùng với tập hợp nào đã chọn trước đó, gồm \(K\) số \(1 \leq i_{1} \lt i_{2} \lt i_{3} \lt ....\lt i_{k} \leq N\)
-
Bước 3 : Tính giá trị \(P = a[i_{1}] * a[i_{2}] * a[i_{3}] * ........ * a[i_{k}]\)
-
Bước 4 : Thực hiện tăng **Sum ** lên \(P\) (gán \(Sum:=Sum+P\))
-
Bước 5 : Nếu vẫn còn tập hợp chưa được chọn thì lặp lại Bước 2, nếu không thì thực hiện Bước 6
-
Bước 6 : Xuất phần dư của **Sum ** khi chia cho \(10^9+7\)
Tỉ lệ tỉ số là kết quả cuối cùng của bước \(6\), nếu tính ra tỉ lệ này thì algorit có khả năng \(99\%\) sẽ thành công trong lần cá cược này, anh sẽ giành lại những gì đã mất. Vì vậy các bạn chuyên tin hãy giúp anh ấy tìm lại sổ đỏ, tiền bạc, xe cộ nhé !
Input
-
Dòng đầu tiên gồm \(2\) số nguyên dương \(N\) và \(K\).
-
Dòng tiếp theo gồm \(N\) số nguyên dương \(a[i_{1}], a[i_{2}], a[i_{3}], .... , a[i_{N}] \leq 10^9\)
Output
- Gồm một số duy nhất là kết quả ở Bước 6
Scoring
-
Subtask \(1\) (\(10\%\) số điểm): \(K=2\)
-
Subtask \(2\) (\(10\%\) số điểm): \(K=3\)
-
Subtask \(3\) (\(80\%\) số điểm): Không có ràng buộc gì thêm.
Example
Test 1
Input
5 2
1 2 3 4 5
Output
85
Note
Sum = \(A[1]∗A[2]+A[1]∗A[3]+A[1]∗A[4]+A[1]∗A[5]+A[2]∗A[3]+A[2]∗A[4]+A[2]∗A[5]+A[3]∗A[4]+A[3]∗A[5]+A[4]∗A[5] == 1.2+1.3+1.4+1.5+2.3+2.4+2.5+3.4+3.5+4.5=85\)
Ấn Nút
Nhân ngày quốc tế thiếu nhi, \(H\) và \(I\). Nếu ấn nút màu tím, số \(H\) sẽ tăng 1 đơn vị, nếu ấn nút màu hồng, số \(I\) sẽ tăng 1 đơn vị. Flow God ghen tuông vì đã tặng cho em gái cưng của mình một món quà cool ngầu như thế, bèn tìm ra cách để phải mất mặt.
đã tặng em gái của Flow God xấu-trai-hơn-ami một chiếc máy thần kì. Trên chiếc máy là 2 nút màu tím và hồng, cùng 2 sốFlow God xấu-trai-hơn-ami muốn \(N\) và \(R\), Flow God muốn \(gcd(N,R)\) là lớn nhất có thể. Nhắc lại, \(gcd(a,b)\) là một số \(c\) lớn nhất mà cả \(a\) và \(b\) đều chia hết cho \(c\) (quy ước \(gcd(0, n)=gcd(n, 0)=n\) với mọi số nguyên dương \(n\)). Tuy nhiên, quá thần thánh, đã tìm ra kết quả siêu nhanh. Flow God tức tối, giận chém ma. "ma" ở đây chính là các bạn tham gia contest.
ấn các nút tím và hồng tổng cộng không quá F lần. Sau khi thực hiện các thao tác, giả sử 2 số mà nhận được làCác bạn cần trả lời \(q\) câu hỏi của Flow God, mỗi câu hỏi có dạng \(H\) \(I\) \(F\). Cần in ra \(gcd(N,R)\) lớn nhất, \(N\) và \(R\) là các số nhận được, sau khi ấn hai nút tím và hồng không quá \(F\) lần.
Input
- Dòng đầu tiên chứa một số nguyên dương \(q\) là số câu hỏi của Flow God xấu-trai-hơn-ami.
- Tiếp theo là \(q\) dòng, mỗi dòng chứa một bộ số nguyên không âm \(H\) \(I\) \(F\) là một câu hỏi.
Output
- In ra \(q\) dòng, mỗi dòng là một số nguyên là \(gcd(N,R)\) lớn nhất có thể đạt được.
Dữ liệu đảm bảo luôn có kết quả.
Constraints
- \(H, I \leq 10^5\)
- \(q \leq 10^2\)
- \(F \leq 10^{13}\)
Scoring
- Subtask \(1\) (\(5\%\) số điểm): \(H = 0, I \leq 10^5, F \leq 10^{13}, q \leq 10^2\).
- Subtask \(2\) (\(20\%\) số điểm): \(H, I \leq 10^5, q \leq 10^2, F \leq 10^{5}\).
- Subtask \(3\) (\(10\%\) số điểm): \(H, I \leq 10^5, q \leq 10^2, F = 0\)
- Subtask \(4\) (\(65\%\) số điểm): \(H, I \leq 10^5, q \leq 10^2, F \leq 10^{13}\)
Example
Test 1
Input
3
0 1 1
1 1 2
2 4 1
Output
2
2
2
Note
Với \(0\) \(1\), có thể ấn nút hồng \(1\) lần để thành \(0\) \(2\). \(Gcd(0,2)\) = \(2\). Có thể chứng minh đây là kết quả lớn nhất.
Với \(1\) \(1\), có thể ấn nút hồng \(1\) lần, nút tím \(1\) lần để thành \(2\) \(2\). \(Gcd(2,2)\) = \(2\). Có thể chứng minh đây là kết quả lớn nhất.
Với \(2\) \(4\), có thể không ấn nút nào. \(Gcd(2,4)\) = \(2\). Có thể chứng minh đây là kết quả lớn nhất.