QOJ.ac

QOJ

时间限制: 1.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#9417. 回文多边形

统计

有一个包含 $n$ 个顶点的凸多边形。顶点按逆时针方向从 $1$ 到 $n$ 编号,顶点 $i$ 的权值为 $f(i)$。

如果一个顶点子集的权值序列按逆时针顺序构成一个回文序列,我们称该子集是回文的。更正式地说,假设该子集包含 $k$ 个顶点 $v_0, v_1, \dots, v_{k-1}$(按逆时针顺序排列)。若存在一个整数 $d$,满足 $0 \le d < k$,且对于所有 $0 \le i < k$ 都有 $$f(v_{(d+i) \bmod k}) = f(v_{(d-1-i) \bmod k})$$ 则称该子集是回文的。

在所有回文子集中,找出其凸包面积最大的一个。

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$,表示测试数据的组数。对于每组测试数据:

第一行包含一个整数 $n$ ($3 \le n \le 500$),表示凸多边形的顶点数。

第二行包含 $n$ 个整数 $f(1), f(2), \dots, f(n)$ ($1 \le f(i) \le 10^9$),其中 $f(i)$ 是第 $i$ 个顶点的权值。

接下来的 $n$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($-10^9 \le x_i, y_i \le 10^9$),表示第 $i$ 个顶点的坐标。顶点按逆时针顺序给出。保证凸多边形具有正面积且没有两个顶点重合。但可能存在三个顶点共线的情况。

保证所有测试数据的 $n$ 之和不超过 $10^3$。

输出格式

对于每组测试数据,输出一行,包含一个整数,表示回文子集所构成的最大凸包面积乘以 $2$ 的结果。可以证明该值一定是一个整数。

样例

输入 1

3
8
2 4 2 4 3 4 5 3
2 3
0 6
-3 3
-3 0
-2 -3
1 -5
3 -3
4 0
3
1 2 3
0 0
1 0
0 1
3
1 1 1
0 0
1 0
0 1

输出 1

84
0
1

说明

第一个样例测试数据如下图所示。选择顶点 $2, 4, 5, 6, 8$ 并考虑 $d = 1$,则权值序列 $\{4, 3, 4, 3, 4\}$ 是一个回文序列。

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.