CSES - Knuth Division | Phép chia Knuth

cuberlong

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
...Xem thêm

gcd( a -> b)

PhanDinhKhoi

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)\)\(1\)

...Xem thêm

Chơi cá độ (C div 1)

WuTan , algorit , bin9638

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\)\(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\)

...Xem thêm

Ấn Nút

ami

Nhân ngày quốc tế thiếu nhi, ami đã 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ố \(H\)\(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ì ami đã 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 để ami phải mất mặt.

Flow God xấu-trai-hơn-ami muốn ami ấ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à ami nhận được là \(N\)\(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\)\(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, ami quá thần thánh, đã tìm ra kết quả siêu nhanh. Flow God tức tối, giận cuom1999 chém ma. "ma" ở đây chính là các bạn tham gia contest.

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\)\(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.

...Xem thêm