LQDOJ Contest #6 - Bài 4 - Gấu Nhồi Bông

Xem PDF

Điểm: 2000 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: ANDTEDDY.INP Output: ANDTEDDY.OUT

Quãng đường đi du lịch rất vui vẻ, nhưng đã gặp một vài biến cố...

Trên đường đi chơi quanh đất nước, cô "bạn gái" của shiba bỗng hướng ánh mắt vào một tiệm gấu nhồi bông. Để có thể lấy được gấu nhồi bông cho cô ấy, shiba quyết định sẽ chơi ném phi tiêu để nhận phần thưởng. Bằng kĩ năng "aim" "bách phát bách trượt" của mình, tất nhiên là cậu ấy không trúng phát nào rồi. Tuy nhiên, cô chủ tiệm gấu nhồi bông lại là một người đam mê tin học. Nhận ra dáng vẻ của một "lập trình viên" - ~lưng gù, trán có nếp nhăn, mặt già~ đẹp trai phong độ ngời ngợi tới từ shiba, cô chủ quyết định nhờ cậu ấy giải một bài toán, và hứa sẽ tặng tất cả gấu nhồi bông nếu cậu ấy giải được bài toán này. Bài toán đó như sau:

Cho một mảng \(a\)\(n\) phần tử \(a_1,a_2,...,a_n\). Có hai loại truy vấn như sau:

  • 1 p x: Gán giá trị cho phần tử \(a_1\) bằng \(x\).
  • 2: Dựng \(n\) dãy:
    • Với \(i = 1\): \(b_{i,k} = a_k\), \(S = S + b_{i,k}\).
    • Với \(i > 1\): \(b_{i,k} = b_{i-1,k}\) \(\text AND\) \(b_{i-1,k+1}\), \(S = S + b_{i,k}\).

Do đang mải đi chơi, shiba quyết định gửi gắm bài toán này tới các bạn. Để shiba có thể quay lại với "người yêu cũ", sao các bạn không góp ~một chân~ một tay cho cậu ấy nhỉ?

Yêu cầu: Với mỗi thao tác loại \(2\), in ra kết quả của số \(S\).

Biểu thức \(x\) \(AND\) \(y\) biểu diễn phép toán tử AND của hai số \(x\)\(y\).

Input

  • Dòng thứ nhất chứa một số nguyên \(\phi\) - số thứ tự của subtask chứa test đó.
  • Dòng thứ hai chứa một số nguyên dương \(n\) (\(1 \le n \le 10^5\)).
  • Dòng thứ ba chứa \(n\) số nguyên \(a_1, a_2,..., a_n\) (\(0 \le a_i \le 10^5\)).
  • Dòng thứ tư chứa một số nguyên \(q\) (\(q \le 10^5\)) - số lượng truy vấn.
  • \(q\) dòng tiếp theo, mỗi dòng chứa một truy vấn thuộc một trong hai dạng như trên, truy vấn dạng 1 p x\(1 \le p \le n, 0 \le x \le 10^5\).

Output

  • Với mỗi truy vấn loại \(2\), in ra kết quả bài toán trên một dòng.

Scoring

Gọi \(query\) là số lượng truy vấn loại \(2\).

  • Subtask \(1\) (\(10\%\) số điểm): \(q = 1\), \(query = 1\), \(a_1 = a_2 = ... = a_n = 0\),
  • Subtask \(2\) (\(25\%\) số điểm): \(n \le 100, q \le 100\).
  • Subtask \(3\) (\(15\%\) số điểm): \(q = 1\), \(query = 1\), \(a_1 = a_2 = ... = a_n\).
  • Subtask \(4\) (\(20\%\) số điểm): \(query <= 10\).
  • Subtask \(5\) (\(30\%\) số điểm): không có ràng buộc gì thêm.

Example

Test 1

ANDTEDDY.INP
2
3
1 1 1
6
2
1 2 2
2
1 3 2
1 1 2
2
ANDTEDDY.OUT
6
4
12

Bình luận


  • 0
    fptbinhnd    7:49 p.m. 7 Tháng 9, 2024 chỉnh sửa 9

    .


    • -1
      doanngocgiahung2013    3:40 p.m. 27 Tháng 7, 2024

      có ai giúp em ý tưởng c++ không Ạ


      • 0
        lehongduc    7:40 p.m. 24 Tháng 6, 2024

        em vẫn chx hiểu truy vấn loại 2 phải làm gì