Hatena::Grouptopcoder

tochukasoの日記

 | 

2014-07-20

CodeForces R257 Div2

| 19:00

1完

A問題

概要

 ・飴が欲しくて一列に並んでいる子供がいる。

 ・子供はそれぞれ飴の欲しい数が異なる。

 ・列の先頭の子にN個の飴をあげる

 ・満足すれば列から抜ける。満足しなければ最後尾に並びなおす。

 ・一番最後に飴を貰う子を答える。

解答方法

 ・ループ処理で先頭から順に飴をあげる。

 ・飴をあげるごとに最後に飴をあげた子供の番号を更新する。

 ・ループ内で一度も飴をあげなかった場合(既に子供が並んでいない)に最後に飴をあげた番号を返す。

    void solve() throws Throwable {
        int n = readInt();
        int m = readInt();
        int[] c = readIntArray();
        int index = 0;
        while(true) {
            boolean isC = false;
            int i = 0;
            for (; i < n ; i++) {
                if(c[i] <= 0) {
                    continue;
                }
                c[i] -= m;
                index = i;
                isC = true;
            }
            if(!isC) {
                pw.println(index + 1);
                return;
            }
        }
    }    

B問題

概要

 ・f(i) = f(i-1) + f(i+1)

 ・f(1) = x, f(2) = y

 ・x,y,Nが与えられるときに、Nの戻り値を答える。

解答方法

 ・数学ゲー?

 ・N%6の戻り値分のケースに分類できる模様。

 ・でもよくわからない。

C問題

概要

 ・N * M のマスが与えられる。

 ・縦方向、または横方向に全部でN回分割出来る。

 ・最小のマスの大きさが最大になるようにした場合の大きさを返却する。

解答方法

 ・N,M,Kが10^9なので、Nの分割回数を0~K、または0~N試すとTLEになる。

1586⇒1486

 |