SRM 463 DIV2
904 -> 942
( ^ω^) …… V ノ> ││ ┛┗
問題 | 結果 | 備考 |
---|---|---|
250 | Passed System Test | 101.41pt |
500 | Passed System Test | 408.56pt |
1000 | Opened |
撃墜はなし。部屋の1000が次々ブチ落とされていくのを呆然と眺めてました。
250 - BunnyPuzzle
import java.util.*; public class BunnyPuzzle { public int theCount(int[] bu) { int res = 0; Arrays.sort(bu); if(bu.length==2) return 2; for(int i=0; i<bu.length-1; i++){ int j=i+1; int dis = Math.abs(bu[j]-bu[i])*2; if(j==bu.length-1){ res++; } else if(chk(bu, bu[i]+dis, bu[j+1], true)){ res++;} if(i==0){ res++; }else if(chk(bu, bu[j]-dis, bu[i-1], false)){ res++;} } return res; } boolean chk(int[] arr, int bb, int e, boolean r){ for(int i=0; i<arr.length ;i++){ if(arr[i] == bb) return false; } if(r) if(bb<e) return true; else return false; else if(bb>e) return true; else return false; } }
56分かかるとか遅すぎて洒落にならない。
もう途中から完全に混乱して半泣きだったので、一旦消して落ち着いて一から書き直したら通った。
500 - RabbitNumbering
残り17分。絶望しながら500を開いたけどあっさり解けてびびる。
import java.util.*; public class RabbitNumbering { public int theCount(int[] maxN) { long res = 1; Arrays.sort(maxN); int len = maxN.length-1; for(int i = 0, j = 0; i<=len; i++, j++){ res *= maxN[i]-j;; res = Math.abs(res % 1000000007); } return (int)res; } }
小さいのから1つずつ数えていけば終了。
ダブルなセミコロンや、なぜか絶対値を取ってるところから、とても焦ってたことがうかがえる。
1000 - Nisoku
解けそうな気がしたのでpracticeで挑戦したけどギブアップ。
以下はテストケースは通ったもののSystem Testであっさり落ちるコード。
import java.util.*; public class Nisoku { public double theMax(double[] cards) { Arrays.sort(cards); ArrayList<Double> prev = new ArrayList<Double>(); ArrayList<Double> now = new ArrayList<Double>(); for(double c : cards) prev.add(c); while(true){ while(prev.size()>0){ int size = prev.size(); if(size==1) { now.add(prev.remove(0)); break; } double a = prev.remove(size-1); double b = prev.remove(0); double c = a+b; double d = a*b; now.add( c>d ? a+b : a*b ); } if(now.size()==1) return now.remove(0); prev.addAll(now); Collections.sort(prev); now.clear(); } } }
ソート済みのリストから頭と尻から数をとってきて、+,*両方やってみて大きい方を採用、を繰り返し、要素の数が1つになったらそれを返して終了。
なぜこれでテストケース通ったんだ...
practice roomでwriterさんのコードを読んだら解き方は理解できたのでよしとする。
メモ
- どうせ春休みで暇なんだから過去問解こうぜ!
- どこが分からないかすら分からなくなったら一から書き直すのも手