Hatena::Grouptopcoder

tochukasoの日記

 | 

2014-06-21

Codeforces Round #253

| 20:54

・A問題

 重複を除いた文字種の数をカウントする。

 既に使った文字をメモしておく。

    void solve() throws Throwable {
        startTime = System.currentTimeMillis();
        
        char[] c = br.readLine().toCharArray();
        
        boolean[] used = new boolean[30];
        int sum = 0;
        
        for (char x : c) {
            if (x >= 'a' && x <= 'z') {
                if (!used[x - 'a']) {
                    used[x - 'a'] = true;
                    sum++;
                }
            }
        }
        pw.println(sum);
        
    }    

・B問題

 ある文字列が与えられたときに、

 その文字列の部分文字列を連続して同じになる場合の最長の長さを答える。

 また、引数で指定されたintを文字列の右に加算してよい。

    void solve() throws Throwable {
        char[] c = br.readLine().toCharArray();
        int K = readInt();
        int N = c.length;
        int max = 0;
        for (int i = 0; i < N; i++) {
            for (int j = 2; i + j <= N + K; j+=2) {
                boolean isFalse = false;
                for (int k = 0; k < j / 2; k++) {
                    if (i + j / 2 + k < N) {
                        if (c[i + k] != c[i + j / 2 + k ]) {
                            isFalse = true;
                            break ;
                        }
                    }
                }
                if (!isFalse) {
                    max = max(max, j);
                }
            }
        }
        pw.println(max);
    }    

C,D,Eは解けず。

1400⇒1451

最高レート更新ヽ(^o^)丿

 |