trang chủ / bài tập / crazytown

Thị trấn Điên (Crazy Town)

Đề bài

Mô tả

Trên mặt phẳng tọa độ có n đường thẳng vô hạn, đường thẳng thứ i được cho bởi phương trình aix+biy+ci=0 (với aibi không đồng thời bằng 0). Các đường thẳng này chia mặt phẳng thành nhiều miền liên thông (có thể có miền vô hạn). Mỗi miền như vậy được gọi là một khối.

Nhà của bạn nằm trong một khối nào đó, và trường đại học của bạn cũng nằm trong một khối. Trong một bước, bạn có thể di chuyển từ khối hiện tại sang một khối khác nếu hai khối có chung một đoạn biên giới có độ dài khác 0. Nếu hai khối chỉ gặp nhau tại một điểm giao (không có đoạn biên chung dài hơn 0) thì không được phép di chuyển trực tiếp giữa chúng.

Hãy xác định số bước ít nhất cần thực hiện để đi từ khối chứa nhà tới khối chứa trường đại học. Bảo đảm rằng cả nhà và trường đại học đều không nằm trên bất kỳ đường thẳng nào.

Dữ liệu vào

  • Dòng thứ nhất chứa hai số nguyên x1,y1 — tọa độ của nhà.
  • Dòng thứ hai chứa hai số nguyên x2,y2 — tọa độ của trường đại học.
  • Dòng thứ ba chứa một số nguyên n — số đường thẳng.
  • n dòng tiếp theo, mỗi dòng chứa ba số nguyên ai,bi,ci — các hệ số của đường thẳng thứ i.

Dữ liệu ra

In ra một số nguyên duy nhất là số bước ít nhất cần thực hiện.

Ràng buộc

  • 106x1,y1,x2,y2106
  • 1n300
  • 106ai,bi,ci106|ai|+|bi|>0
  • Không có hai đường thẳng nào trùng nhau.
  • Cả nhà và trường đại học đều không nằm trên đường thẳng nào.

Ví dụ

Input Output Giải thích
1 1
-1 -1
2
0 1 0
1 0 0
2 Hai đường thẳng y=0x=0 đều tách nhà (1,1) và trường (1,1) về hai phía. Phải băng qua cả hai.
1 1
-1 -1
3
1 0 0
0 1 0
1 1 -3
2 Đường x=0y=0 tách hai điểm; đường x+y=3 thì cả hai điểm đều ở cùng một phía nên không phải băng qua.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0