SRM444 div2

Tags: ,
  2009/07/10 04:21

2009/09までにTopCoder Rate1200越えを目標にしました。
何か目標にしないとICPCのショックから立ち直れない・・・。

バイト終わりで眠くてしんどかったのですが、気合いでSRM出ました。

Problem 250 FourBlocksEasy

最初は、えーこれ探索?面倒くさそって思ったけど、
後からセルの高さが2という事実に気づく。

    public int maxScore(String[] grid) {
        int result = 0;

        boolean[][] map = new boolean[2][grid[0].length()];

        for (int i = 0; i < 2; i++) {
			for (int j = 0; j < grid[0].length(); j++) {
				if (grid[i].charAt(j) == '1') {
					map[i][j] = true;
					result++;
				}
			}
		}

        // 4x4
        for (int i = 0; i < grid[0].length() - 1; i++) {
			if (!map[0][i] && !map[0][i + 1] && !map[1][i] && !map[1][i + 1]) {
				map[0][i] = true;
				map[0][i + 1] = true;
				map[1][i] = true;
				map[1][i + 1] = true;
				result += 16;
			}
		}

        for (int i = 0; i < 2; i++) {
			for (int j = 0; j < grid[0].length(); j++) {
				if (!map[i][j]) result++;
			}
		}

        return result;
    }

208.51

Problem 500 NumericalPerfectionLevel

これも最初、問題の意味が分からなかった。
例がなかったらきっと一生解読できなかったと思う。

素数を使うオーラは感じたけど、面倒くさかったので枝刈り無しで。
バカだった。ICPCボケだなぁ。

public class NumericalPerfectionLevel {
    public int getLevel(long N) {
    	int count = 0;
    	for (long i = 2; i <= N; i++) {
			while (N % i == 0) {
				count++;
				N /= i;
			}
			if (N <= i) break;
		}

    	int k = 0;
    	for (int i = 4; i <= count; i *= 4, k++);
    	return k;
    }

4回守ったが、5回目にやられてた。
後で試したら1ケースだけTLE・・・あぁ。
0.0

Problem1000 RotatingTriangles
これDiv1の1問目なの?
人のblogしか読んでないから分からないけど、だったたとしたら恐ろしい。

つっても、ちょろちょろ解読してると意外と探索でいけそうだなぁ。
書いてみようかなぁーでも眠い・・・でダウン。

Challengeは出てないけど、起きたら500が落ちててしょぼん。
でもレートはあがってた。元がひどいからか。
次は2問といて緑ネ目指すぞー。