QOJ.ac

QOJ

시간 제한: 1 s 메모리 제한: 64 MB 총점: 100

#13813. 看见边界

통계

农夫唐(Don)看守着围绕他那 $N$ 米 $\times$ $N$ 米的正方形平坦农田的栅栏($2 \le N \le 500,000$)。栅栏的一个角落位于原点 $(0, 0)$,对角位于 $(N, N)$;农夫唐的栅栏各边均平行于 $X$ 轴和 $Y$ 轴。

栅栏的四个角上以及每条边上每隔一米处都立有栅栏柱,总共有 $4 \cdot N$ 个栅栏柱。栅栏柱是垂直立起的,且其半径忽略不计。农夫唐希望确定当他站在栅栏内的某个给定位置时,他能看到多少个栅栏柱。

农夫唐的农田里有 $R$($1 \le R \le 30,000$)块巨大的岩石,这些岩石阻挡了他看部分栅栏柱的视线,因为他不够高,无法看穿或看过去任何一块岩石。每块岩石的底部都是一个面积不为零的凸多边形,其顶点坐标均为整数。岩石完全垂直立起。岩石之间互不重叠,互不接触,也不接触农夫唐或栅栏。农夫唐不接触栅栏,不站在岩石内部,也不站在岩石上。

给定农夫唐栅栏的大小、农田内岩石的位置和形状,以及农夫唐所站的位置,计算农夫唐能够看到的栅栏柱的数量。如果从农夫唐的位置看去,岩石的某个顶点与某个栅栏柱完美共线,则他无法看到该栅栏柱。

输入格式

  • 输入的第一行包含两个空格分隔的整数:$N$ 和 $R$。

  • 下一行包含两个空格分隔的整数,表示农夫唐在栅栏内的位置的 $X$ 和 $Y$ 坐标。

  • 输入的其余部分描述这 $R$ 块岩石:

    • 岩石 $i$ 的描述开头包含一个整数 $p_i$($3 \le p_i \le 20$),表示该岩石底部的顶点数。
    • 接下来的 $p_i$ 行中,每行包含两个空格分隔的整数,表示一个顶点的 $X$ 和 $Y$ 坐标。岩石底部的顶点是互不相同的,并按逆时针顺序给出。

输出格式

输出文件应包含单行,其中有一个整数,表示农夫唐能看到的栅栏柱数量。

样例

输入样例 1

100 1
60 50
5
70 40
75 40
80 40
80 50
70 60

输出样例 1

319

说明

请注意,岩石 1 的底部有三个共线的顶点:$(70,40)$,$(75,40)$ 和 $(80,40)$。

数据范围

  • $2 \le N \le 500,000$
  • $1 \le R \le 30,000$
  • $3 \le p_i \le 20$
  • 所有坐标均为整数。

子任务

对于每个测试点,如果你的程序输出了正确的结果,你将获得该测试点的满分。本题不设部分分。

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.