LG#UVA111. [UVA111] 历史考试评分(History Grading)

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB

题目描述

题目描述

一次历史考试要求学生按照发生时间为若干历史事件排序。全部排对的学生可以得到满分,但对于没有全部排对的学生,应当怎样给分呢?

可以考虑两种方法:

  1. 每个排名完全正确的事件计 11 分。
  2. 在学生给出的事件顺序中,选出尽可能多的事件,使这些事件之间的先后关系与正确顺序一致;选出的事件不要求连续,每个事件计 11 分。

例如,正确顺序为 1 2 3 4,学生给出的顺序为 1 3 2 4。第一种方法得 22 分;第二种方法可以选出 1 2 41 3 4,得到 33 分。

本题使用第二种方法。请计算每位学生的得分。

特别注意:输入给出的是每个事件的排名,不是按时间排列的事件编号。 对于输入序列 c1,c2,,cnc_1,c_2,\ldots,c_ncic_i 表示事件 ii 的正确排名;对于学生序列 r1,r2,,rnr_1,r_2,\ldots,r_nrir_i 表示该学生认为事件 ii 应处在第几位。

输入格式

输入包含一组或多组考试数据,读到文件结束为止,不给出数据组数。

每组数据的第一行只有一个整数 nn,表示历史事件的数量,事件编号为 11nn

第二行包含 nn 个整数 c1,c2,,cnc_1,c_2,\ldots,c_n,表示各事件的正确排名。

随后若干行,每行包含 nn 个整数 r1,r2,,rnr_1,r_2,\ldots,r_n,表示一位学生给出的排名。每个排名序列中,11nn 各出现一次。

当读到下一行只有一个整数时,表示下一组考试数据开始;否则当前行是一位学生的答案。

输出格式

按照输入顺序,为每位学生输出一行,包含一个整数,表示该学生按照第二种方法得到的分数。

不同组考试的数据之间不需要输出空行。

输入样例 #1

4
4 2 3 1
1 3 2 4
3 2 1 4
2 3 4 1

输出样例 #1

1
2
3

样例解释 #1

正确排名 4 2 3 1 对应的事件顺序为 4 2 3 1。第一位学生的排名 1 3 2 4 对应事件顺序 1 3 2 4,两者能够保持相对顺序一致的最长事件序列长度为 1。其余两位学生的得分分别为 2 和 3。

输入样例 #2

5
1 2 3 4 5
1 2 3 4 5
5 4 3 2 1

输出样例 #2

5
1

输入样例 #3

3
2 3 1
2 3 1
1 2 3
4
1 2 3 4
2 1 4 3

输出样例 #3

3
2
2

样例解释 #3

前四行属于第一组考试,后面三行属于第二组考试。只为学生答案输出得分,不为正确排名那一行输出。

数据范围

2n202\le n\le20

1ci,rin1\le c_i,r_i\le n,每个排名序列都是 11nn 的一个排列。

输入可能包含多组考试数据,每组可能有多位学生。

来源

洛谷 UVA111 · 原题