/ Vijos / 题库 /

强基班选拔

强基班选拔

时间限制:1秒  内存限制:256M


【题目描述】

  在强基班的选拔考试中,一共有 \(n\) 个学霸参加了考试,其中第 \(i\) 个学霸的分数为 \(a_i\)。现在需要从中挑选 \(m\) 个左右的学霸组成强基班。

  对教务主任小H来说,这原本是一件很简单的事情,但有 \(k\) 对学霸提出了奇怪的要求:一对学生中如果其中一个选上,那么另一个也必须选,否则他们将会很生气而上告教育局。当然如果两人都没选上,那就无所谓了。

  现在请你帮助小H在不让学霸生气的情况下,挑选出尽量接近 \(m\) 的学霸人数,并使得分数总和尽量大。

【输入格式】

  第一行三个正整数 \(n,m,k\),所有学霸用 \(1..n\) 依次编号。
  第二行包含 \(n\) 个整数,其中第 \(i\) 个整数表示第 \(i\) 个学霸的总分 \(a_i\)。
  接下来 \(k\) 行,每行两个数,表示一对有要求的学霸的编号。

【输出格式】

  输出两个整数,第一个整数表示选出的人数,这个数与 \(m\) 尽可能接近,如果有两种方案与 \(m\) 的接近程度一样,输出其中较小的一个;第二个整数表示最大的总分和。

【输入输出样例1】

 Input

4 3 2
600 630 580 680
1 2
3 4

 Output

2 1260

【样例1说明】

  选3号和4号两位学霸,总分和为 580+680=1260;
  虽然也可选1号2号,但是他们的分数和比较小;
  无法选3个学霸出来;
  虽然可以4个学霸全选,和选2人时,与m=3接近程度一样,但要求输出人数较小的情况。

【输入输出样例2】

 Input

12 5 5
690 650 580 680 600 670 600 610 650 600 700 680
1 2
4 7
7 8
5 9
10 5
6 12
3 11

 Output

5 3390

【数据限制】

  共有20个测试点,其中:
  测试点1~4有 \(1≤m≤n≤20000,m=0,k=0,0≤ai≤750\)。
  测试点5~8有 \(1≤m≤n≤20,0≤k≤20,0≤ai≤750\)。
  测试点9~20有 \(1≤m≤n≤20000,0≤k≤20000,0≤ai≤750\)。

【来源】

  Mr.he

信息

ID
3224
难度
(无)
分类
动态规划 | 背包数据结构 | 并查集 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
3
上传者