QOJ.ac

QOJ

حد الوقت: 0.5 s حد الذاكرة: 512 MB مجموع النقاط: 100

#10952. 同色

الإحصائيات

在直线上有 $n$ 个不同的点,共有 $m$ 种颜色,其中 $m \le n$。令 $S$ 为这些点的集合。我们希望选择一个非空子集 $C \subseteq S$,满足以下条件:

对于 $S - C$ 中的每一个点 $p$,在 $C$ 中的点里,距离 $p$ 最近的点必须与 $p$ 具有相同的颜色。当然,如果 $p$ 在 $C$ 中有多个距离最近的点,只要其中至少有一个点的颜色与 $p$ 相同即可。

例如,图 G.1 中有六个点,标记为 1 到 6,共有两种颜色。点 4 和点 5 是红色,其余为蓝色。集合 $\{2, 4, 6\}$ 满足上述性质。但集合 $\{2, 4\}$ 不满足该性质,因为点 6 在 $\{2, 4\}$ 中距离最近的点是点 4,而点 4 的颜色与点 6 不同。事实上,集合 $\{2, 4, 6\}$ 是满足该性质的最小基数子集。

图 G.1:直线上的六个彩色点

给定直线上的 $n$ 个不同点及其颜色,编写一个程序,找到一个满足上述性质且基数最小的非空子集 $C \subseteq S$,并输出该最小基数。

输入格式

程序从标准输入读取数据。输入的第一行包含两个整数 $m$ 和 $n$ ($1 \le m \le n \le 100,000$),其中 $m$ 是颜色数量,$n$ 是点数。点从左到右依次编号为 1 到 $n$,颜色编号为 1 到 $m$。第二行包含一个由 $n$ 个递增整数组成的序列,其中第 $i$ 个数是点 $i$ 的坐标。点的坐标 $x$ 满足 $0 \le x \le 10^9$ 且互不相同。第三行包含一个由 $n$ 个整数组成的序列,其中第 $i$ 个数是点 $i$ 的颜色,颜色值在 1 到 $m$ 之间。

输出格式

程序将结果写入标准输出。仅输出一行,包含满足上述性质的非空子集 $C \subseteq S$ 的最小基数。

样例

样例输入 1

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

样例输出 1

3

样例输入 2

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

样例输出 2

5

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.