Tấm cảm quang hấp thụ ánh sáng (3)

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1004M
Input: stdin
Output: stdout

Nguồn bài:
Vũ Huy Trường :))
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Sau khi học xong bài Vật lí về ánh sáng ở trường, anh ~T~ vô cùng hào hứng và quyết định tự mình thực hiện một thí nghiệm nhỏ.

Anh dọn sạch toàn bộ đồ đạc trong phòng ngủ, kéo kín rèm cửa, tắt hết đèn và chuẩn bị ~N~ chiếc đèn pin cùng rất nhiều tấm cảm quang hấp thụ ánh sáng. Sau khi chuẩn bị xong, anh đặt tất cả các đèn pin sát bức tường bên trái của căn phòng để quan sát xem các chùm sáng sẽ in lên bức tường đối diện như thế nào.

Coi căn phòng là một hình chữ nhật trên mặt phẳng tọa độ. Bốn bức tường của căn phòng lần lượt nằm trên các đường thẳng:

  • Bức tường bên trái: ~x = 0~;
  • Bức tường bên phải: ~x = W~;
  • Bức tường phía dưới: ~y = 0~;
  • Bức tường phía trên: ~y = H~.

Đèn pin thứ ~i~ được đặt tại điểm ~(0, Y_i)~ trên bức tường bên trái.

Đèn pin thứ ~i~ phát ra một chùm sáng hình nón có góc mở bằng ~a_i~ độ. Trục chính của chùm sáng vuông góc với bức tường bên trái, song song với trục ~Ox~ và hướng về phía bức tường bên phải.

Nói cách khác, mọi tia sáng của đèn pin thứ ~i~ đều xuất phát từ điểm ~(0, Y_i)~ và tạo với trục ~Ox~ một góc nằm trong khoảng từ ~-\frac{a_i}{2}~ đến ~\frac{a_i}{2}~ độ.

Trong căn phòng có ~M~ tấm cảm quang hấp thụ ánh sáng.

Tấm cảm quang thứ ~j~ được mô tả bởi bốn số nguyên

$$ (x_j,\;y_j,\;h_j,\;k_j) $$

trong đó:

  • Cạnh dưới của tấm nằm tại điểm ~(x_j, y_j)~;
  • Cạnh trên của tấm nằm tại điểm ~(x_j, y_j + h_j)~;
  • Tấm cảm quang được biểu diễn bởi đoạn thẳng đứng nối hai điểm trên;
  • ~k_j~ là chỉ số hấp thụ của tấm.

Một tia sáng được coi là đi qua tấm cảm quang nếu tia cắt đoạn thẳng biểu diễn tấm đó.

Mỗi khi đi qua tấm cảm quang thứ ~j~, tổng chỉ số hấp thụ của tia sẽ tăng thêm ~k_j~.

Đèn pin thứ ~i~ có chỉ số xuyên thấu bằng ~K_i~.

Một tia sáng của đèn pin thứ ~i~ chỉ có thể tiếp tục truyền đi nếu tổng chỉ số hấp thụ của tất cả các tấm cảm quang mà tia đã đi qua luôn nhỏ hơn ~K_i~. Ngay khi tổng này lớn hơn hoặc bằng ~K_i~, tia sáng sẽ bị hấp thụ hoàn toàn tại vị trí đó và không thể truyền tiếp.

Mọi tia sáng còn tồn tại khi tới được bức tường bên phải (~x = W~) sẽ tạo thành các điểm sáng trên bức tường này.

Một điểm trên bức tường bên phải được coi là được chiếu sáng nếu tồn tại ít nhất một tia sáng của một trong ~N~ chiếc đèn pin tới được điểm đó.

Hợp của tất cả các điểm sáng tạo thành một hoặc nhiều đoạn sáng liên tiếp trên bức tường bên phải.

Nhiệm vụ của bạn là tính tổng chiều dài của tất cả các đoạn sáng đó.

Input

Gồm ~T~ bộ dữ liệu và mỗi bộ dữ liệu được nhập vào theo quy cách sau:

  • Dòng đầu tiên gồm hai số nguyên dương ~H, W~ lần lượt là kích thước chiều cao và chiều rộng của căn phòng.
  • Dòng thứ hai chứa số nguyên dương ~N~ là số lượng đèn pin.
  • ~N~ dòng tiếp theo, dòng thứ ~i~ chứa ba số nguyên dương ~Y_i, a_i, K_i~ lần lượt là vị trí ~(0, Y_i)~, góc mở của chùm sáng và chỉ số xuyên thấu của đèn pin thứ ~i~.
  • Dòng tiếp theo chứa số nguyên dương ~M~ là số lượng tấm cảm quang hấp thụ ánh sáng.
  • ~M~ dòng tiếp theo, dòng thứ ~j~ chứa bốn số nguyên ~x_j, y_j, h_j, k_j~ lần lượt là vị trí ~(x_j, y_j)~, chiều cao và chỉ số hấp thụ của tấm cảm quang thứ ~j~.

Output

In ra trên một dòng ứng với mỗi bộ dữ liệu tổng chiều dài của hợp tất cả các đoạn sáng trên bức tường bên phải.

Đáp án được coi là đúng nếu sai số tuyệt đối hoặc sai số tương đối không vượt quá ~10^{-6}~.

Constraints

  • ~1 \le T \le 10~
  • ~1 \le N, M \le 1000~
  • ~10 \le W \le H \le 10^9~
  • ~0 \le Y_i \le H~
  • ~0 < a_i < 180~
  • ~1 \le K_i, k_j \le 10^9~
  • ~0 < x_j < W~
  • ~0 < y_j < H~
  • ~1 \le y_j + h_j \le H~
Sample Input
1
20 10
2
10 90 5
5 60 3
3
5 5 4 3
5 12 3 4
2 7 4 2
Sample Output
16.0000000000

Subtasks

  • Subtask 1 (7%): ~N = 2~.
  • Subtask 2 (7%): ~a_i = 90~.
  • Subtask 3 (7%): ~k_j = 1~.
  • Subtask 4 (7%): ~h_j = 1~.
  • Subtask 5 (7%): ~K_i \le k_j~.
  • Subtask 6 (7%): ~W, H \le 1000~.
  • Subtask 7 (7%): ~N, M \le 10~.
  • Subtask 8 (7%): ~N, M \le 100~.
  • Subtask 9 (44%): Không có ràng buộc nào thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.