这是一个贪心问题,可以通过以下步骤解决:
- 关键发现:对于每种药剂,我们只需要考虑两种方案:直接购买红色版本,花费 用其他两种红色药剂配置蓝色版本,花费 选择这两种方案中花费较小的即可
- 贪心策略:对于第 i 种药剂,比较:直接购买的花费 配置的花费 (u和v是配方中指定的两种药剂)选择较小值作为获得这种药剂的花费
- 具体步骤:读入所有药剂的价格和配方遍历每种药剂,计算获得该药剂的最小花费将所有药剂的最小花费相加得到答案
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n + 1]; for(int i = 1; i <= n; i++) { a[i] = sc.nextInt(); } int ans = 0; for(int i = 1; i <= n; i++) { int u = sc.nextInt(); int v = sc.nextInt(); ans += Math.min(a[i], a[u] + a[v]); } System.out.println(ans); } }