Photon Cascade

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Trong một thí nghiệm vật lý, một photon có năng lượng ban đầu \(E_0\) được giữ trong một hộp phản xạ lý tưởng. Photon lần lượt va chạm với \(N\) thành hộp. Ở lần va chạm thứ \(i\), năng lượng của photon thay đổi theo công thức:

\[E_i = \frac{E_{i-1}}{1 + \alpha_i E_{i-1}}\]

Trong đó \(\alpha_i > 0\) là hệ số đặc trưng cho lần va chạm thứ \(i\). Sau mỗi lần va chạm, người thực hiện thí nghiệm có thể thay đổi hệ số \(\alpha_i\) của một lần va chạm.

\(Q\) thao tác thuộc hai loại:

  • 1 i x: Thay đổi hệ số của lần va chạm thứ \(i\) thành \(x\).
  • 2 l r: Tính năng lượng của photon sau khi thực hiện các va chạm từ \(l\) đến \(r\) với năng lượng ban đầu trước lần va chạm \(l\) luôn là \(E_0\).

Gợi ý vật lý: Bằng cách lấy nghịch đảo hai vế, ta có \(\frac{1}{E_i} = \frac{1}{E_{i-1}} + \alpha_i\). Năng lượng sau va chạm thứ \(r\) được tính bởi:

\[E_r = \frac{1}{\frac{1}{E_0} + \sum_{i=l}^{r} \alpha_i}\]

Input

  • Dòng đầu tiên chứa hai số nguyên \(N, Q\) (\(1 \le N, Q \le 2 \cdot 10^5\)).
  • Dòng thứ hai chứa số thực \(E_0\) (\(0 < E_0 \le 10^{12}\)).
  • Dòng thứ ba chứa \(N\) số thực \(\alpha_1, \alpha_2, \ldots, \alpha_N\) (\(0 < \alpha_i \le 10^6\)).
  • \(Q\) dòng tiếp theo, mỗi dòng mô tả một thao tác:
  • 1 i x: \(1 \le i \le N\), \(0 < x \le 10^6\).
  • 2 l r: \(1 \le l \le r \le N\).

Output

Với mỗi truy vấn loại 2, in ra năng lượng của photon trên một dòng. Chấp nhận sai số tuyệt đối hoặc tương đối không quá \(10^{-9}\).

Sample

Test 1

Input
3 3
10
0.1 0.2 0.3
2 1 3
1 2 0.5
2 1 3
Output
1.428571428571429
1.000000000000000
Note

Ban đầu \(E_0 = 10, \alpha = [0.1, 0.2, 0.3]\).

  • Truy vấn 2 1 3: \(\frac{1}{E} = \frac{1}{10} + 0.1 + 0.2 + 0.3 = 0.7 \Rightarrow E = \frac{1}{0.7} \approx 1.428571428571429\).
  • Truy vấn 1 2 0.5: Cập nhật \(\alpha_2 = 0.5\).
  • Truy vấn 2 1 3: \(\frac{1}{E} = \frac{1}{10} + 0.1 + 0.5 + 0.3 = 1.0 \Rightarrow E = \frac{1}{1.0} = 1.0\).

Subtask

  • Subtask 1 (30% số điểm): \(N, Q \le 2000\).
  • Subtask 2 (30% số điểm): \(N, Q \le 2 \cdot 10^5\), không có truy vấn loại 1 (mảng \(\alpha\) cố định) .
  • Subtask 3 (40% số điểm): \(N, Q \le 2 \cdot 10^5\), đầy đủ các thao tác cập nhật và truy vấn.
    -

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.