QOJ.ac

QOJ

Limite de temps : 3 s Limite de mémoire : 512 MB Points totaux : 100

#854. Cung thủ Vlad

Statistiques

Vlad là một sinh viên gương mẫu nổi tiếng với những cuộc phiêu lưu kỳ thú, nhiều trong số đó đã được lưu giữ thành các bài toán cho các cuộc thi lập trình. Nhưng một cuộc sống không ngừng nghỉ như vậy đã khiến Vlad hơi kiệt sức. "Dù mình đi đâu, cũng chỉ toàn là vấn đề! Mình xong rồi!" – cậu tuyên bố, ngay trước khi rời trường đại học và hướng về phía dãy núi Bieszczady.

Vlad thuê một túp lều nhỏ, nơi cậu dành vài tháng đầu tiên của kỳ nghỉ. Nhưng chẳng bao lâu sau, sự nhàm chán bắt đầu bủa vây lấy cậu, vì vậy Vlad quyết định tìm cho mình một sở thích: cậu mua một cây cung, vài mũi tên và bắt đầu luyện tập bắn cung hàng ngày. Sau vài tháng rèn luyện chăm chỉ, Vlad đã đạt được một số kết quả rất đáng hài lòng, khi cậu có thể bắn một mũi tên với tốc độ đáng kinh ngạc là $C$ mét mỗi giây. Nhưng thật khó để tận hưởng những thành tựu như vậy khi không có ai xung quanh.

"Nhìn này! Mình sẽ đứng ngay đây và bắn một mũi tên thật nhanh, để nó bay qua tất cả những cái cây kia!" — Vlad thốt lên với bạn, một lập trình viên trẻ quyết định đến thăm cậu. Vlad căng cung và bắn mũi tên đầu tiên. Những chiếc lông vũ đung đưa trong không trung, đầu mũi tên lấp lánh trên bầu trời... nhưng nó lại đâm sầm vào một cái cây. "Khoan đã, để mình thử lại!"

Lần thử thứ hai của cậu thậm chí còn ngoạn mục hơn lần đầu. Nhưng mũi tên này cũng không thể tìm được đường ra khỏi khu rừng. "Một lần cuối thôi!" Vlad hét lên, đưa tay vào túi một lần nữa. Sau đó, bạn ngăn cậu lại. Lo sợ rằng Vlad sẽ hết tên, bạn quyết định tìm một góc bắn tối ưu mà cậu nên nhắm tới. Và thế là bạn lấy chiếc máy tính trong ba lô ra, sẵn sàng giải quyết vấn đề này theo phong cách UJ TCS.

Vlad đứng trên mặt phẳng tọa độ Descartes tại điểm $(0, 0)$. Cả hai điểm $(0, 1)$ và $(1, 0)$ đều cách Vlad đúng 1 mét. Có $N$ cái cây được đánh số từ $1$ đến $N$, và cái cây thứ $i$ được biểu diễn bằng một đoạn thẳng đứng nối các điểm $(x_i, 0)$ và $(x_i, y_i)$ với một số nguyên dương $x_i$ và $y_i$. Khi Vlad bắn ở một góc $\alpha$, mũi tên có vận tốc ngang ban đầu $v_x$ bằng $C \cdot \cos(\alpha)$ và vận tốc dọc ban đầu $v_y = C \cdot \sin(\alpha)$. Mũi tên không bị ảnh hưởng bởi lực cản không khí và quỹ đạo của nó là một đường parabol (cụ thể hơn, vận tốc ngang $v_x$ giữ nguyên trong suốt quá trình bay, trong khi $v_y$ giảm dần tuyến tính với mức giảm mỗi giây bằng $g$), đi qua điểm $(0, 0)$. Chúng ta giả định gia tốc trọng trường là $g = 10 \, m/s^2$. Mục tiêu của Vlad sẽ đạt được nếu quỹ đạo của mũi tên mà cậu bắn không cắt bất kỳ cái cây nào (hay cụ thể hơn là các đoạn thẳng đại diện cho chúng) tại bất kỳ điểm nào. Hơn nữa, quỹ đạo của mũi tên phải cắt trục $x$ tại điểm có tọa độ $x$ lớn hơn tọa độ $x$ của bất kỳ cái cây nào.

Hãy xuất ra một giá trị có thể có của $\tan(\alpha)$ cho phép Vlad đạt được các điều kiện này.

Dữ liệu vào

Dòng đầu tiên của dữ liệu vào chứa số lượng bộ test $z$. Các mô tả của các bộ test theo sau.

Dòng đầu tiên của mỗi bộ test bao gồm một số nguyên $1 \le C \le 10^9$ là tốc độ mũi tên của Vlad tính bằng mét/giây.

Dòng thứ hai của mỗi bộ test chứa một số nguyên duy nhất $1 \le N \le 100\,000$ – số lượng cây.

Đối với mỗi bộ test, $N$ dòng tiếp theo chứa hai số nguyên $x_i, y_i$ ($1 \le x_i, y_i \le 10^9$). Cái cây thứ $i$ được biểu diễn bằng một đoạn thẳng đứng giữa các điểm $(x_i, 0)$ và $(x_i, y_i)$.

Tổng của $N$ trong tất cả các bộ test không vượt quá $300\,000$.

Dữ liệu ra

Đối với mỗi bộ test, hãy xuất ra một số duy nhất với chính xác 3 chữ số sau dấu thập phân. Nó phải xấp xỉ một trong các giá trị đúng của $\tan(\alpha)$ với sai số không lớn hơn $10^{-3}$. Bạn có thể giả định rằng các nghiệm luôn tồn tại, và bất kỳ giá trị đúng nào của $\tan(\alpha)$ đều nằm trong một khoảng nghiệm có độ dài ít nhất là $10^{-2}$.

Ví dụ

Dữ liệu vào 1

3
5
1
1 1
5
1
1 1
13
1
7 7

Dữ liệu ra 1

2.000
3.000
2.429

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.