Universal Cup Judging System

Universal Cup

時間限制: 2 s 記憶體限制: 1024 MB
统计

이 문제에는 첨부 파일이 있습니다. 이를 사용하여 입자의 움직임을 시뮬레이션하고 시각화할 수 있습니다.

VegiCat은 $n$개의 행과 $n$개의 열로 이루어진 격자 위의 입자들을 관찰합니다. 왼쪽 아래 칸의 좌표는 $(1, 1)$입니다. 수평 좌표는 왼쪽에서 오른쪽으로 증가하고, 수직 좌표는 아래에서 위로 증가합니다. 각 입자는 수평 방향(왼쪽 또는 오른쪽)과 수직 방향(위 또는 아래)을 가집니다. 각 단계가 시작될 때, 각 입자는 자신의 방향을 다음과 같이 조정합니다:

problem_23593_b4836be5c81ec5d9dcf55b91a721f3ad.png
  • 수평 방향으로 다음 칸이 격자 밖에 있다면 수평 방향이 반대로 바뀝니다.
  • 수직 방향으로 다음 칸이 격자 밖에 있다면 수직 방향이 반대로 바뀝니다.

이러한 조정이 끝난 후, $(x, y)$에 있는 입자는 두 개의 자식 입자를 생성합니다:

  • 수평 방향이 왼쪽이면 $(x - 1, y)$에, 오른쪽이면 $(x + 1, y)$에 하나;
  • 수직 방향이 아래쪽이면 $(x, y - 1)$에, 위쪽이면 $(x, y + 1)$에 하나.

두 자식 입자는 모두 부모의 수평 및 수직 방향을 그대로 물려받습니다. 그런 다음 부모 입자는 사라집니다.

방향에 관계없이 여러 입자가 동시에 같은 칸을 차지할 수 있습니다. 입자들은 서로 상호작용하거나 서로의 방향을 바꾸지 않습니다.

시간 $0$일 때, $(x_0, y_0)$에 다음과 같은 방향 쌍을 가진 네 개의 입자가 있습니다:

  • 오른쪽 및 위쪽;
  • 왼쪽 및 위쪽;
  • 오른쪽 및 아래쪽;
  • 왼쪽 및 아래쪽.

각 단계마다 모든 입자는 동시에 방향을 조정한 뒤 위에서 설명한 대로 분열합니다.

$q$개의 쿼리가 주어집니다. 각 쿼리는 정수 $A, B, C$와 시간 $t$를 제공합니다. 각 쿼리에 대해, $Ax + By + C = 0$을 만족하면서 시간 $t$일 때 적어도 하나의 입자를 포함하는 격자 칸 $(x, y)$의 개수를 구하세요.

입력

첫째 줄에 테스트 케이스의 개수를 나타내는 정수 $T$ ($1 \le T \le 10^5$)가 주어집니다. 이어서 테스트 케이스의 설명이 주어집니다.

각 테스트 케이스의 첫째 줄에는 네 정수 $n, x_0, y_0, q$ ($2 \le n \le 10^9$, $1 \le x_0, y_0 \le n$, $1 \le q \le 10^5$)가 주어집니다. 격자는 $n$개의 행과 $n$개의 열로 이루어져 있으며, 초기 칸은 $(x_0, y_0)$이고 쿼리는 $q$개입니다.

다음 $q$개의 줄에는 각각 네 정수 $A, B, C$와 $t$ ($|A|, |B|, |C| \le 10^9$, $0 \le t \le 10^9$)가 주어집니다. 이는 시간 $t$일 때 직선 $Ax + By + C = 0$에 대한 쿼리를 나타냅니다. $A$와 $B$가 동시에 $0$이 아님이 보장됩니다.

모든 테스트 케이스에서 $q$의 합은 $10^5$을 초과하지 않음이 보장됩니다.

출력

각 쿼리마다 한 줄에 정수 하나를 출력합니다: 시간 $t$일 때 $Ax + By + C = 0$을 만족하고 적어도 하나의 입자를 포함하는 격자 칸 $(x, y)$의 개수입니다.

예제

예제 입력 1

1
6 5 5 4
2 -1 -5 0
1 -1 0 1
11 45 14 2
1 0 -5 3

예제 출력 1

1
0
0
3

참고

아래 그림은 예제에서의 입자 변화 과정과 쿼리로 주어진 직선들을 보여줍니다. 여기서 회색 칸은 직선이 지나는 정수 좌표를 포함하는 칸을 나타내며, 모든 분열 방향은 유효성 조정을 거친 상태입니다. 세 번째 쿼리는 고려 중인 격자에서 너무 멀리 떨어져 있으므로 세 번째 쿼리의 직선은 여기에서 생략되었습니다.

같은 칸에 있으면서 같은 방향 쌍을 가진 입자들은 하나의 기호로 그려졌으며, 중복도는 생략되었습니다.

problem_23593_6aefd3f27e435f8b6b87db43b7a7aa66.png

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.