マイナビプログラミングコンテスト2021(AtCoder Beginner Contest 201)(Rated範囲外)
コンテスト前のレート:2064
(Ratedだとしたら)レート通りのパフォーマンスが得られる順位:303位(1500点、65分55秒)
※今回は最近のひどさにさらに輪をかけてひどかったので、もう全くまともに書く気ないです。
A - Tiny Arithmetic Sequence
思考過程
- ソートしてを満たすかどうか調べる。
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int[] a = new int[3]; for (int i = 0; i < a.length; i++) { a[i] = sc.nextInt(); } sc.close(); Arrays.sort(a); if (a[2] - a[1] == a[1] - a[0]) { System.out.println("Yes"); } else { System.out.println("No"); } } }
ここまで1分09秒+0ペナ。285位。
B - Do you know the second highest mountain?
思考過程
- ペアソートして番目を出力する。
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Obj[] arr = new Obj[n]; for (int i = 0; i < n; i++) { Obj o = new Obj(); o.s = sc.next(); o.t = sc.nextInt(); arr[i] = o; } sc.close(); Arrays.sort(arr, (o1, o2) -> o2.t - o1.t); System.out.println(arr[1].s); } static class Obj { String s; int t; } }
ここまで2分41秒+0ペナ。191位。
C - Secret Number
思考過程
- "0000"~"9999"が条件を満たすか全部試す。
- 条件を満たすかの判定は、0から9まで、indexOfで含まれているかどうか調べる。
import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); char[] s = sc.next().toCharArray(); sc.close(); int ans = 0; for (int i = 0; i < 10000; i++) { String t = String.valueOf(i); while (t.length() < 4) { t = "0" + t; } boolean flg = true; for (int j = 0; j < 10; j++) { if (s[j] == 'o') { // jが含まれていない場合NG if (t.indexOf(String.valueOf(j)) == -1) { flg = false; break; } } else if (s[j] == 'x') { // jが含まれている場合NG if (t.indexOf(String.valueOf(j)) != -1) { flg = false; break; } } } if (flg) { ans++; } } System.out.println(ans); } }
ここまで10分06秒+0ペナ。365位。
D問題は40分ほどかけて解けず。
DPということまでは一瞬で見当が付き、後ろからやることも考えたが、おかしな遷移しか書けていなかった。
残りの40~50分はほぼE問題に費やし、残り5分で例2が合って、残り3分でmodの取り漏れを直して例3が合って提出できたが、1ケースだけTLE(3200ms台)。
残り3分でぱっと思い付く小細工で定数倍改善を試みるが通らず。むしろ遅くなっていた。
解法は、DFS(木DP)で葉から各桁ごとに0の個数と1の個数を保持して根まで戻っていく感じ。
F問題はほぼ問題文を読んだだけで、各人ごとにのいずれかを選ぶことになりそうくらいまではわかったが、どれが最適なのかは全然わかりそうになかったのですぐE問題に戻った。
最終結果:ABCの3完、10分06秒、1552位、パフォーマンス1256相当
レート変動:2064(Unrated)
もうUnratedのABCはくじかつだと思って、ARCやAGCがまともにできればいいやという感じ。
2月末頃のタイミングで黄色になってABCから逃げられてなかったら、今頃1800台くらいまでは落ちてるんじゃないだろうか・・・。