UOJ Logo Universal Online Judge

UOJ

#326. 【UTR #3】几何冲刺

附件下载 统计

Scape非常喜欢在和Mythological逛公园的时候,讲时间复杂度的知识给她听。但是他很快便伤心地发现Mythological对复杂度的兴趣,还没有旁边的蚯蚓列队表演的兴趣高,只好向whx诉苦。

whx面对Scape的疑惑,告诉他,重要的是Mythological喜欢什么,而不是他自己喜欢什么。Scape发现Mythological特别喜欢玩Geometry Dash,所以特意下载了一个来玩。

打开游戏,Scape发现平面直角坐标系上有 n 个红点 P0,P1,,Pn1m 个蓝点 Q0,Q1,,Qm1。(其中这 n+m 个点和原点 O 一共 n+m+1 个点中,任意三点不共线。)

Scape很快反应过来,以原点 O 和任意两个红点 Pi,Pj 为顶点构成的三角形 OPiPj 一共有 n(n1)2 个。

如果一个三角形的内部不包含任何蓝点,Scape称该三角形是空的,否则,Scape称该三角形是非空的。

Scape的任务是判断以原点和任意两个红点为顶点构成的 n(n1)2 个三角形中,每个三角形是空的还是非空的。为了证明一个三角形非空,对于每个非空的三角形,请给出任意一个在该三角形内部的蓝点 Qk0k<m)。

任务

你需要编写一个函数 check_triangles,以完成题目的任务:

  • check_triangles(n, m, rx, ry, bx, by, result)
    • n: 坐标系上给出的红点个数。
    • m: 坐标系上给出的蓝点个数。
    • rx: 大小为 n 的数组;rx[i] 表示红点 Pi 的横坐标,其中 0i<n
    • ry: 大小为 n 的数组;ry[i] 表示红点 Pi 的纵坐标,其中 0i<n
    • bx: 大小为 m 的数组;bx[i] 表示蓝点 Qi 的横坐标,其中 0i<m
    • by: 大小为 m 的数组;by[i] 表示蓝点 Qi 的纵坐标,其中 0i<m
    • result: 大小为 n×n 的二维数组;你需要将三角形 OPiPj0i<j<n)的判断结果存放到 result[i][j] 中:若三角形 OPiPj 非空,则将任意一个在其内部的蓝点 Qk 的编号 k 存放到 result[i][j] 中,否则将 1 存放到 result[i][j] 中。你不应当访问 0i<j<n 范围以外的 result[i][j]。

实现细节

本题只支持 C/C++。

你只能提交一个源文件实现如上所述的 check_triangles 函数,并且遵循下面的命名和接口。你需要包含头文件 triangles.h。

void check_triangles(int n, int m, int *rx, int *ry, int *bx, int *by, int **result);

如果有不清楚的地方,见样例及测评库下载,内附了样例程序

评测方式

评测系统将读入如下格式的输入数据:

  1. 1 行:数据类型 type(值为 01)。
  2. 2 行:n, m
  3. 3+i 行:rx[i], ry[i]。
  4. 3+n+i 行:bx[i], by[i]。

对于样例数据,type=1,评测系统将会输出 n1 行,其中第 i+1 行包含 ni1 个整数,依次为 result[i][i+1], result[i][i+2], ..., result[i][n-1] 的值。

对于测试数据,type=0,评测系统将输出一行一个整数,表示根据数据和 result 数组计算得到的校验和。

注意:type=0 时,下发的测评库计算的校验和为 result[i][j](0i<j<n)中非负数的个数。最终评测时,校验和计算方法与下发的测评库计算方法不同。

样例一

input

1
4 3
3 3
-2 4
5 -5
-4 -2
3 -1
1 0
-3 -2

output

-1 0 -1
1 -1
2

explanation

如下图所示:

样例解释

样例输出中 result[0][2]=0 可以改成 1,这是因为 B1(1,0) 同样在以 O(0,0),A0(3,3),A2(5,5) 为顶点的三角形 OA0A2 内部。

样例二

见样例及测评库下载。该样例输出共包含 17926 个非负数。

样例三

见样例及测评库下载。该样例输出共包含 38756 个非负数。

限制与约定

对于所有数据,2n40001m4000,所有点的横、纵坐标均在 [109,109] 范围内。

为避免精度误差,保证任意三点构成的夹角在 [1012π,π1012π] 之间。

子任务 分值 n m
1 32 200 200
2 46 1200 1200
3 22 4000 4000

交互式类型的题目怎么本地测试

时间限制:2s

空间限制:512MB

下载

样例及测评库下载