QOJ.ac

QOJ

実行時間制限: 3 s メモリ制限: 128 MB 満点: 100

#16303. 天气预报

統計

Bajtek 刚刚开始他的人工智能之旅。他决定在一个天气预报问题上测试他新学到的知识。他的目标是输出一个由 $m$ 个整数组成的序列 $p_1, p_2, \dots, p_m$,用于描述未来几天的温度预报。Bajtek 在一段时间前已经生成了这样一个序列,现在他想知道他的预报有多准确。为此,他从互联网上下载了一个由 $n$ 个整数组成的序列 $t_1, t_2, \dots, t_n$(其中 $m \le n$),该序列描述了连续几天的实际温度。现在,他希望在实际温度序列中选择一个长度为 $m$ 的连续子区间,使得该子区间与预报序列的不匹配位置数最少。由于初步实验的结果不尽如人意,Bajtek 可以在将预报序列与数据进行比较之前,先对其进行循环移位(旋转)。

更正式地讲,Bajtek 首先选择其预报序列的某个循环移位,即对于任意选择的 $1 \le i \le m$,得到序列 $p_i, p_{i+1}, \dots, p_m, p_1, \dots, p_{i-1}$。我们将旋转后的预报序列记为 $p'_1, p'_2, \dots, p'_m$。接着,他将旋转后的预报序列对齐到数据序列中任意选择的位置 $j$(其中 $1 \le j \le n - m + 1$)。最后,他计算不匹配的位置数,即满足 $p'_k \ne t_{j+k-1}$ 的位置 $k$($1 \le k \le m$)的数量。他希望通过这种方式使不匹配的位置数最少。请帮助他求出这个最小的不匹配数!

输入格式

输入的第一行包含两个整数 $n$ 和 $m$($1 \le m \le n \le 10\,000$),分别表示实际数据序列的长度和预报序列的长度。

第二行包含一个由 $n$ 个整数组成的序列,描述实际数据 $t_1, t_2, \dots, t_n$($-20 \le t_i \le 40$)。

第三行包含一个由 $m$ 个整数组成的序列,描述 Bajtek 生成的预报 $p_1, p_2, \dots, p_m$($-20 \le p_i \le 40$)。

输出格式

输出的第一行(也是唯一的一行)应包含一个整数,表示将预报序列的某种循环移位对齐到实际数据时,可能达到的最小不匹配位置数。

样例

输入样例 1

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

输出样例 1

1

说明

样例解释:Bajtek 可以对预报序列进行循环移位,得到序列 $-1, 2, 3$,然后将其对齐到从第一个位置开始的数据子区间(即 $-1, 2, 0$)。此时,它们仅在第三个位置上不同,因此不匹配数为 $1$。我们也可以发现,序列 $2, 3, -1$(对应 $i = 1$ 的移位)、$3, -1, 2$(对应 $i = 2$ 的移位)以及 $-1, 2, 3$(对应 $i = 3$ 的移位)都不是实际数据的连续子区间,因此无法获得更小的不匹配数。

其他样例测试:测试 0a 即为上述样例。此外:

  • 0b:$n = 1000$,$m = 500$,且对于 $1 \le i \le n$ 有 $t_i = (i \bmod 61) - 20$,对于 $1 \le i \le m$ 有 $p_i = ((i + 13) \bmod 61) - 20$。
  • 0c:$n = 3000$,$m = 2000$,序列 $t$ 的前 1500 个元素为 $0$,接下来的 1500 个元素为 $1$;而序列 $p$ 的前 1000 个元素为 $1$,接下来的 1000 个元素为 $0$。
  • 0d:$n = 3500$,$m = 2000$,序列 $t$ 由七个长度均为 500 的连续段组成,其值依次为 $6, 5, 4, 3, 2, 1, 0$;而序列 $p$ 满足对于 $1 \le i \le m$ 有 $p_i = i \bmod 7$。
  • 0e:$n = 5000$,$m = 3000$,且对于 $1 \le i \le n$ 有 $t_i = 4$,而对于 $1 \le i < m$ 有 $p_i = 4$ 且 $p_m = 5$。
  • 0f:$n = 10\,000$,$m = 10\,000$,且对于 $1 \le i \le n$ 有 $t_i = i \bmod 3$,而对于 $1 \le i \le m$ 有 $p_i = i \bmod 4$。

子任务

测试集分为以下子任务。每个子任务的测试由一个或多个独立的测试点组组成。

子任务 限制 分值
1 $n \le 1000$ 12
2 $n \le 3000$ 且实际数据和预报的值均在 $[0, 1]$ 范围内 19
3 $n \le 3500$ 且序列 $t_i$ 单调不增 15
4 $n \le 3000$ 22
5 $n \le 5000$ 15
6 无附加限制 17

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.