QOJ.ac

QOJ

実行時間制限: 2.0 s メモリ制限: 512 MB 満点: 100 ハック可能 ✓

#10916. 划分点集

統計

在谱聚类(Spectral Clustering)中,数据点被表示为带权无向图 $G$ 的顶点。设 $n$ 和 $m$ 分别为图 $G$ 的顶点数和边数。顶点编号从 $1$ 到 $n$。较大的边权意味着相邻顶点非常相似;较小的边权则意味着不相似。聚类可以看作是将顶点划分为两个非空不相交的集合 $A$ 和 $B$,使得

$$Ncut(A, B) = \frac{cut(A, B)}{\sum_{x \in A} d_x} + \frac{cut(A, B)}{\sum_{x \in B} d_x}$$

最小化,其中 $cut(A, B)$ 是连接不同组顶点的边的总权重,$d_x$ 是与第 $x$ 个顶点相邻的边的总权重。

在本题中,给定一个具有 $n$ 个顶点和 $m$ 条边的图 $G$,其中每个顶点对应二维平面上的一个数据点。你需要找到一条直线,将这 $n$ 个点划分为两个非空集合 $A$ 和 $B$,使得 $Ncut(A, B)$ 最小化。注意,直线不能穿过任何数据点。

输入格式

输入包含多组数据。第一行包含一个整数 $T$ ($1 \le T \le 200$),表示数据组数。

对于每组数据,第一行包含两个整数 $n$ 和 $m$ ($2 \le n \le 1\,500, n-1 \le m \le 5\,000$),分别表示顶点数和边数。

接下来的 $n$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($1 \le i \le n, 0 \le x_i, y_i \le 10\,000$),表示位于 $(x_i, y_i)$ 的数据点。保证没有两个点重合。

接下来的 $m$ 行,第 $i$ 行包含三个整数 $u_i, v_i$ 和 $w_i$ ($1 \le i \le m, 1 \le u_i, v_i \le n, u_i \neq v_i, 1 \le w_i \le 100$),表示连接 $u_i$ 号顶点和 $v_i$ 号顶点的双向边。保证同一对顶点之间没有多条边,且图是连通的。

保证所有数据组的 $n$ 之和不超过 $1\,500$,所有数据组的 $m$ 之和不超过 $5\,000$。

输出格式

对于每组数据,输出一行,包含一个形如 $p/q$ 的既约分数,表示 $Ncut(A, B)$ 的最小值。形式上,你的答案必须满足 $p, q > 0$ 且 $\gcd(p, q) = 1$,其中 $\gcd(a, b)$ 表示 $a$ 和 $b$ 的最大公约数。

样例

样例输入 1

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

样例输出 1

500/2499

说明

以下是样例的最优解,如下图所示:

  • $A = \{1, 2, 3\}, B = \{4, 5, 6\}$。
  • $cut(A, B) = 2 + 3 = 5$。
  • $\sum_{x \in A} d_x = d_1 + d_2 + d_3 = 16 + 16 + 17 = 49$。
  • $\sum_{x \in B} d_x = d_4 + d_5 + d_6 = 18 + 18 + 15 = 51$。
  • $Ncut(A, B) = \frac{5}{49} + \frac{5}{51} = \frac{500}{2499}$。

样例示意图。

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.