AtCoder Beginner Contest 095
※今回は不参加で、問題はすべてコンテスト終了後に解きました。
A - Something on It
import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { String s = sc.next(); int price = 700; for (int i=0; i<3; i++) { if (s.charAt(i)=='o') price += 100; } out.println(price); } }
B - Bitter Alchemy
import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int n=sc.nextInt(), x=sc.nextInt(); int min = Integer.MAX_VALUE; for (int i=0; i<n; i++) { int temp = sc.nextInt(); min = Math.min(min,temp); x -= temp; } out.println(n+(x/min)); } }
入力で与えられたn種類のドーナツについては、すべて作れることが保障されているので、まずはそれを作る。残った粉で、一番粉消費が少ないドーナツを作れるだけ作る。
C - Half and Half
import static java.lang.System.*; import java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int a=sc.nextInt(), b=sc.nextInt(), c=sc.nextInt(), x=sc.nextInt(), y=sc.nextInt(); int total = 0; if (a+b > 2*c) { //ABピザを買う必要あり total += 2*c*(Math.min(x,y)); if (x > y) { total += (x-y)*a; } else if (x < y) { total += (y-x)*b; } int total2 = 2*c*(Math.max(x,y)); out.println(Math.min(total,total2)); } else { total = a*x + b*y; out.println(total); } } }
まず、(a+b > 2*c)の条件式によって、ABピザを作る必要があるかどうか判断する。作らない場合は簡単。
ABピザを作る場合だが、「最低限の数だけABピザを作り、残りをAピザもしくはBピザで補う場合」と、「余ることが前提でABピザを作り、AピザとBピザは1枚も作らない場合」に分けられる。前者はmin(x,y)個、後者はmax(x,y)個ということだ。
それぞれ実際に作ってみて、金額が少ないほうを出力する。
D - Static Sushi
部分点の解のほうは理解できそうだったけれど、とりあえず先送り
まとめ
とくになし