CSES - Polynomial Queries

haidanghutcansa, An09855

Bạn được cho một mảng \(a\) gồm \(n\) phần tử và \(q\) truy vấn. Có 2 loại truy vấn:

  • Loại 1: có dạng \(1\) \(a\) \(b\) : Tăng phần tử thứ nhất trong đoạn [\(a, b\)] lên 1 đơn vị, phần tử thứ 2 lên 2 đơn vị, và cứ thế đến hết.
  • Loại 2: có dạng \(2\) \(a\) \(b\) : Tính tổng tất cả các phần tử trong đoạn [\(a, b\)]

Input:

Dòng thứ nhất gồm 2 số \(n\)\(q\)

Dòng thứ 2 gồm \(n\) phần tử của mảng \(a\)

\(q\) dòng còn lại, mỗi dòng là 1 truy vấn thuộc loại 1 hoặc 2.

Output:

Với mỗi truy vấn loại 2, in ra tổng của các phần tử trong đoạn [\(a, b\)]. Mỗi đáp án đều được in trên một dòng.

Constraints:

\(1\)\(n\), \(q\)\(2 .10 ^ 5\)

\(1\)\(a_i\)\(10^6\)

\(1\)\(a, b\)\(n\)

Example(s):

Input

5 3
4 2 3 1 7
2 1 5
1 1 5
2 1 5

Output

17
32
...Xem thêm

CSES - Substring Order II | Thứ tự xâu con II

Flower_On_Stone, nhphucqt

Bạn được cho một xâu có độ dài \(n\), và phải trả lời câu hỏi: nếu tất cả các xâu con (không nhất thiết là khác nhau) của xâu đã cho được sắp xếp theo thứ tự từ điển, thì xâu nhỏ thứ \(k\) là gì?

Input

  • Dòng đầu tiên của input gồm 1 xâu có độ dài \(n\), gồm các kí tự in thường a - z.
  • Dòng tiếp theo chứa một số nguyên \(k\), là thứ tự của xâu con cần tìm.

Output

  • In ra xâu con nhỏ thứ \(k\) trong tất cả các xâu con (không nhất thiết là khác nhau) của xâu ban đầu.

Constraints

  • \(1 \leq n \leq 10^5\)
  • \(1 \leq k \leq \frac{n(n+1)}{2}\)

Example

Test 1

Input

baabaa
10

Output

ab

Note

\(10\) xâu con nhỏ nhất được xếp theo thứ tự từ điển lần lượt là: a, a, a, a, aa, aa, aab, aaba, aabaa, và ab.

...Xem thêm

LQDOJ Contest #7 - Bài 2 - Bản Nhạc Của Đá

_minhduc, shiba

Sau khi giới thiệu tuyển thủ cho shiba, cậu ấy đã phần nào tin tưởng hơn _minhduc. Trùng hợp thay, lúc đó một biến cố đã xảy ra, đó là shiba bị bạn gái đá. Liệu chuyện gì sẽ xảy ra kế tiếp?

_minhduc là một đá thủ, chuyên sưu tầm các tảng đá. Hôm nay, bất ngờ tìm được một khu vực có "view triệu đô" - biển xanh, mây trắng, nắng vàng, _minhduc quyết định mang các tảng đá của mình tới để xây dựng thành một đoạn đường.

_minhduc\(n\) tảng đá, tảng đá thứ \(i\) có trọng lượng là \(w_i\), khi nhảy lên trên chúng sẽ phát ra một loại âm thanh, để thuận tiện thì ta đánh số chúng trùng với trọng lượng của tảng đá, gọi là chất âm. Các tảng đá có thể khác nhau về trọng lượng cũng như chất âm, nhưng trọng bộ sưu tầm có rất nhiều đá của _minhduc vẫn có thể tồn tại hai hoặc nhiều tảng đá cùng trọng lượng và chất âm. _minhduc ban đầu xếp chúng thành một con đường thẳng, từ tảng đá thứ \(1\) cho tới tảng đá thứ \(n\). Khi nhảy từ tảng đá đầu tiên tới tảng đá cuối cùng, ta nhận được một "bản nhạc" khá vui tai. Sau đấy cậu ấy đã gọi điện cho bạn gái cũ của shiba để mời cô ấy đến thử đoạn đường này và ngắm nhìn khung cảnh tuyệt đẹp kia.

Tuy nhiên, ngay trước thời điểm cô ấy đến, _minhduc bỗng muốn thay đổi "bản nhạc" kia. Cậu ấy có thể làm thao tác sau vô số lần, đó là chọn hai tảng đá liền kề có tổng trọng lượng không quá \(k\) và đổi chỗ chúng. Sau khi đổi chỗ, cậu ấy sẽ lại thử nhảy từ tảng đá thứ \(1\) tới tảng đá thứ \(n\) và lại thu được một "bản nhạc".

Cậu ấy tự hỏi, nếu cứ thực hiện các thao tác trên, sẽ thu được bao nhiêu "bản nhạc" khác nhau. Hai "bản nhạc" được coi là khác nhau nếu có ít nhất một vị trí mà chất âm của tảng đá giữa chúng khác nhau. ~Cậu ấy cần biết có bao nhiêu "bản nhạc" khác nhau để còn trổ tài "làm nhạc" cho cô bạn gái cũ của shiba biết chứ.~

Yêu cầu: Đếm số "bản nhạc" khác nhau có thể thu được.

Input

  • Dòng đầu tiên chứa số nguyên dương \(\phi\) - số thứ tự của subtask chứa test đó \((1 \le \phi \le 6)\).

  • Dòng tiếp theo chứa hai số nguyên dương lần lượt là \(N\)\(K\) – lần lượt là số tảng đá và tổng trọng lượng tối đa của hai tảng đá liền kề _minhduc có thể chọn để hoán đổi \((1 \le N \le 3 \times 10^5, 1\le K \le 10^9)\).

  • Dòng cuối cùng chứa \(N\) số nguyên dương \(w_1,w_2,...,w_N\) \((1 \le w_i \le 10^9)\).

Output

  • In ra kết quả bài toán sau khi chia lấy dư cho \(10^9+7\).

Scoring

  • Subtask \(1\) (\(10\%\) số điểm): Có \(N \le 7\).

  • Subtask \(2\) (\(10\%\) số điểm): Có \(N \le 100\) và tất cả chất âm của các tảng đá đều khác nhau đôi một.

  • Subtask \(3\) (\(15\%\) số điểm): Có \(N \le 1000\) và tất cả chất âm của các tảng đá đều khác nhau đôi một.

  • Subtask \(4\) (\(20\%\) số điểm): Có \(N \le 1000\).

  • Subtask \(5\) (\(25\%\) số điểm): Có \(N \le 10^5\) và tất cả chất âm của các tảng đá đều khác nhau đôi một.

  • Subtask \(6\) (\(20\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

MUSIC.INP
1
4 8
3 5 3 7
MUSIC.OUT
3
Note
  • Ta có "bản nhạc" ban đầu là \([3,5,3,7]\), cũng là "bản nhạc" đầu tiên.

  • Ta có thể thu "bản nhạc" thứ hai từ "bản nhạc" ban đầu bằng cách hoán đổi \(w_1\)\(w_2\) và ta thu được "bản nhạc" \([5,3,3,7]\).

    • Từ "bản nhạc" thứ hai ta không thể hoán đổi \(w_1\)\(w_2\) vì khi hoán đổi như vậy thì ta thu được "bản nhạc" giống như "bản nhạc" ban đầu.

    • Từ "bản nhạc" thứ hai ta không thể hoán đổi \(w_2\)\(w_3\) vì khi hoán đổi như vậy thì ta thu được "bản nhạc" giống như "bản nhạc" thứ hai bên trên.

    • Từ "bản nhạc" thứ hai ta không thể hoán đổi \(w_3\)\(w_4\) vì tổng của chúng là \(3 + 7 = 10 > 8\).

  • Từ "bản nhạc" ban đầu ta có thể hoán đổi ra "bản nhạc" thứ ba bằng cách hoán đổi \(w_2\)\(w_3\) và ta thu được "bản nhạc" \([3,3,5,7]\).

  • Cứ tiếp tục xét các điều kiện như trên. Ta thu được \(3\) "bản nhạc".

...Xem thêm

Con cừu hồng

CarlavierVN

CarlavierVN rất thích chơi minecraft. Một hôm được nghỉ, anh tạo một thế giới minecraft mới với cái tên “Super Ultimate Ultra Final Nonpareil Survival” và bật chế độ LAN, chơi cùng với Hội Anh em Đa cấp A519. Là một người yêu màu hường ghét sự giả dối, mục tiêu của anh không phải là thành lập một đế chế VierTech hùng mạnh và bá đạo mà là đi tìm những con cừu hồng được sinh ra tự nhiên trong thế giới minecraft đó.

Theo như con mắt tinh tường đã debug qua kha khá dòng code của CarlavierVN thì anh nhận thấy rằng cứ \(100\) giây thì sẽ luôn có \(1\) con cừu được cơ chế Random Generation sinh ra và tỉ lệ sinh ra cừu hồng bên cạnh những con cừu có lông không phải màu hồng cũng được quyết định thông qua hàm Random Number Generation là \(0.164\%\). với mỗi \(1\) con cừu được sinh ra, tỉ lệ con cừu tiếp theo được sinh ra là cừu hồng sẽ tăng thêm \(0.164\%\) vào số tỉ lệ tổng \(p\). Nếu nhân phẩm cao, con con cừu hồng vào một lúc nào đó sẽ sinh ra dựa theo số tỉ lệ tổng là \(p\). Tỉ lệ \(p\) càng cao, xác suất sinh ra cừu hồng càng lớn. Sau khi một con cừu hồng được sinh ra, tỉ lệ tổng p lập tức giảm xuống \(0\%\) như ban đầu. Với \(p=100\%\) thì con cừu tiếp theo được sinh ra chắc chắn sẽ là cừu hồng. Nhưng vừa nhớ ra là còn vài bài toán nhân ma trận chưa làm, CarlavierVN lập tức AFK và chuyển sang tab DevC++ để hoàn thành.

Vì quá bận debug những dòng code “không được clean cho lắm” của chính mình nhưng vẫn muốn chăn cừu, những bạn học sinh giỏi tin là những người CarlavierVN có thể tin tưởng giao cho nhiệm vụ cao cả này. Các bạn hãy giúp CarlavierVN in ra màn hình số con cừu hồng anh đã có sau \(n\) giây AFK nhé!!!

Lưu ý: vì đang chơi ở chế độ LAN nên khi CarlavierVN AFK cừu vẫn được sinh ra như bình thường.

Input

  • Gồm 1 số \(n\) là số giây CarlavierVN đã AFK \((n \le 10^{50})\).

Output

  • Gồm 1 số duy nhất là số cừu hồng mà CarlavierVN đã có sau \(n\) giây AFK.

Example

Test 1

Input
50
Output
0
Note

Vì mới chỉ có \(50s\) sau khi tạo thế giới, chưa có con cừu nào được sinh ra trong thế giới của CarlavierVN cả.

Test 2

Input
500
Output
0
Note

Sau \(500s\), tổng tỉ lệ \(p\) có giá trị là \(0.82\%\), quá thấp để có thể sinh ra được \(1\) con cừu hồng để thỏa mãn thú tính của CarlavierVN.

...Xem thêm