SRM459 DIV2
rate 1003->949
(^ω^;)⊃ アウアウ!! ⊂ミ⊃ ) / ヽ
問題 | 結果 | 備考 |
---|---|---|
250 | passed system test | 154.67pt |
500 | opened | |
1000 | opened |
250 - RecursiveFigures
問題文
『正方形に内接する円を書く→その円に内接する正方形を書く、を指定回数繰り返したとき塗りつぶされてる面積を返せ』
そのままがりがり書くだけなーのにー
なーんでこんなーにー時間かーかってるーのーー
public class RecursiveFigures { public double getArea(int s, int K) { double sa = s; double pi = Math.PI; double res = (sa/2.0)*(sa/2.0)*pi; double r2 = Math.sqrt(2); for(int i=1; i<K; i++){ sa = (sa/r2); res -= sa*sa; res += (sa/2.0)*(sa/2.0)*pi; } return res; } }
500 - Inequalities
問題文
『"X <不等号or等号> <1-1000の整数>"という式が何個か与えられる。最も多くの式が満たされるときの数を返せ。Xは負の数や実数でもいいよ』
- 全部の組み合わせを考える?
- いやこれとんでもない数になるよね
- Xに入るのは-1から1001まで……
- えーっと、あれ?
- 残り20分くらいだし眠くて頭が回らないからもう諦めよう
翌日解き直したらえらい簡単だった。もったいない。
- Xが取りうる値を全部調べて、式を満たす数を見ていけばいい
- 実数も入るので10倍
public class Inequalities { public int maximumSubset(String[] ine) { int res = -1; for(int i=-5; i<=10005; i+=5){ int n = 0; for(int j=0; j<ine.length; j++){ int I = Integer.parseInt(ine[j].substring(ine[j].lastIndexOf(" ")+1))*10; String s = ine[j].substring(ine[j].indexOf(" ")+1, ine[j].lastIndexOf(" ")); if(s.equals("=")) if(i==I) n++; if(s.equals("<")) if(i<I) n++; if(s.equals("<=")) if(i<=I) n++; if(s.equals(">")) if(i>I) n++; if(s.equals(">=")) if(i>=I) n++; } if(res<n) res = n; } return res; } }
メモ
- 下がりすぎわろえない
- 500はしっかり解いておきたい……というか250もっとはやく!!!!
- lastIndexOf()