第一行输入一个整数
,表示药剂种类数量。
第二行输入
个整数
,依次表示直接购买一瓶第
种红色药剂的价格。
接下来
行,第
行输入两个整数
,表示合成蓝色版本第
种药剂所需的两种红色药剂的编号。
输出一个整数,表示获得
种不同药剂所需支付的最小金币数。
5 2 4 10 1 3 2 3 4 5 1 2 2 5 1 4
16
一种最优方案:
直接购买第
种红色药剂,花费
;
利用红色的
调配得到第
种蓝色药剂,花费
;
最终花费
,满足拥有
的不同药剂。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] prr = new int[n];
int count =0;
for(int i=0; i<n; i++){
prr[i] = in.nextInt();
}
int[] prb = new int[n];
for( int i =0; i<n; i++){
prb[i] = prr[in.nextInt()-1] + prr[in.nextInt()-1];
// System.out.println(prb[i]);
}
for(int i=0; i<n; i++){
if(prr[i] < prb[i]){
count = count +prr[i];// 直接购买
}else{
count = count + prb[i];//合成
}
}
System.out.println(count);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
String[] redMedStr = in.nextLine().split(" ");
int[] redMeds = new int[redMedStr.length];
for (int i = 0; i < redMeds.length; i++) {
redMeds[i] = Integer.parseInt(redMedStr[i]);
}
int sum = 0;
for (int i = 0; i < n; i++) {
int b = in.nextInt();
int c = in.nextInt();
int blueMed = redMeds[b-1] + redMeds[c-1];
int redMed = redMeds[i];
sum += Math.min(blueMed, redMed);
}
System.out.println(sum);
}
}