luogu#P6787. 「SWTR-6」Snow Mountain

    ID: 10796 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>贪心2020Special JudgeO2优化构造洛谷月赛

「SWTR-6」Snow Mountain

题目背景

题目背景与解题无关。

题目描述最下方有简化版题意。

天空中飘着雪,放眼望去白茫茫一片。小 A 拿着地图,四处探寻着。

突然,只见前方有一个洞穴。出于好奇心,小 A 走了进去。

洞穴里黑漆漆一片,一眼望不到尽头。道路的两旁尽是白骨,显然,这是曾经来这里探险的人们的残骸。小 A 打了一个冷颤。

这时,小 A 留意到了地上的一张纸片。打开来一看,上面竟写着:

Please contact lydsy2012@163.com!\texttt{Please contact lydsy2012@163.com!}

题目描述

洞穴里有一些水晶,每个水晶有一个能量值 aia_i能量值有大有小,但不会相同。 这些神秘的水晶上附着邪恶势力的灵魂。现在你的任务是摧毁这些水晶,并让它们释放出的邪恶能量能量尽可能小。

你可以选择两个未被摧毁的水晶 i,ji,j,将它们摧毁并释放出 min(ai,aj)×k\min(a_i,a_j)\times k 的邪恶能量。其中 kk 表示这是第 kk 次摧毁。

不过有一些无序水晶对 (x,y)(x,y),如果你将它们一并摧毁,就会发生强大的共振导致山洞倒塌,使你葬身其中!

带着这张纸片,小 A 来到了山洞的尽头,果然发现了 nn 个水晶(nn 为偶数)。正如纸片上所说,每个水晶都有一个能量值 aia_i

对这些水晶进行一番观察,小 A 发现了一个规律:每个水晶 ii所有能量值比它大的水晶中,只会和最多一个发生共振,记其编号为 xix_i

现在小 A 知道了 ai,xia_i,x_i,你能帮助他求出摧毁这些水晶释放出邪恶能量之和的最小值吗?无法摧毁输出 -1\texttt{-1}。否则先输出最小值,再输出摧毁方案。

若摧毁方案有多种,输出任意一种即可。

  • 需要注意的是,摧毁后水晶编号不会发生改变。

简化版题意:

给定两个长为 n (2n)n\ (2|n) 的序列 a,xa,x,满足 aia_i 互不相同且如果 xi1x_i \neq -1,那么 axi>aia_{x_i}>a_i

现在需要进行 n2\frac{n}{2} 次删除操作:选择两个未被删除的数 ai,aja_i,a_j 满足 xijx_i\neq jxjix_j\neq i,并用 min(ai,aj)×k\min(a_i,a_j)\times k 的代价将这两个数从序列 aa 中删去(删除后剩余元素下标不变),其中 kk 表示这是第 kk 次删除。

求删除所有数的最小代价与方案。无解输出 -1\texttt{-1}。若方案有多种,输出任意一种即可。

输入格式

第一行一个整数 nn,保证 nn 是偶数。

第二行 nn 个整数 a1,a2,,ana_1,a_2,\cdots,a_n,保证 aia_i 互不相同。

接下来一行 nn 个整数 xix_i,如果 xi=1x_i=-1 则表示第 ii 个水晶不与能量值比它大的水晶发生共振;否则保证 axi>aia_{x_i}>a_i

题目输入量较大,建议使用 scanf

输出格式

若题目无解,输出一行 -1\texttt{-1}

否则首先输出一行一个整数,表示释放出邪恶能量之和的最小值。

接下来 n2\dfrac{n}{2} 行每行两个由空格隔开的整数,表示被摧毁的水晶对。

题目输出量较大,建议使用 printf

4
1 4 2 3
3 -1 -1 2
4
3 2
1 4
4
5 7 1 3
-1 -1 1 1
7
1 2
3 4
4
1 9 4 5
4 -1 4 2
-1

提示

「样例 3 说明」

无法摧毁所有水晶,因为水晶 44 无法被摧毁。

「数据范围与约定」

本题采用捆绑测试。

  • Subtask 1(5 points):n=2n=2
  • Subtask 2(20 points):n10n \leq 10
  • Subtask 3(15 points):xi=1x_i=-1
  • Subtask 4(20 points):n3×103n\leq 3\times 10^3
  • Subtask 5(15 points):aia_i 升序排列,即 ai<ai+1 (1i<n)a_i<a_{i+1}\ (1\leq i<n)
  • Subtask 6(24 points):无特殊限制。
  • Subtask 7(1 point):hack 数据。

对于 100%100\% 的数据,2n5×1052 \leq n \leq 5 \times 10^51ai1091 \leq a_i \leq 10^9
保证 nn 为偶数且 aia_i 互不相同。
保证答案不超过 26312^{63}-1

「帮助/提示」

请注意 IO 优化。

「Special Judge」

本题使用 SPJ。

请认真阅读输出格式。 输出格式有误可能导致 UKE。

若你的输出的第一行与答案的第一行不同,你将获得本测试点的 0%0\% 分数。

若无解且第一行相同,你将获得本测试点的 100%100\% 分数。

若有解且第一行相同,但方案有误,你将获得本测试点的 60%60\% 分数。

若有解且第一行相同,方案正确,你将获得本测试点的 100%100\% 分数。

另附 checkertestlib.h

百度网盘链接:link,提取码:b7eg。