t8m8-mem8

競プロとか、学んだことを書いていきます。

TCO 2015 Round 2C in Tokyo

初めての記事。
TCO 2015 Round 2Cの東京オンサイトに参加してきた。オンサイトイベントは少ないから行けるだけで嬉しい。

先着100人と言われたから早めに行ってTシャツ貰ったけど、結局みんな貰えたっぽい(?)。会場に入ると既に結構人がいる。みんな強そうに見える。みんな赤く見える。

肝心のTCOの結果は0完だった。challenge phaseの終了とともに会場に広がるため息。同じような人が多いらしい。
Easyの解法はiwiさんのスライドの3問目。解説を聞いてしまえばDPするだけだけど、それまでの考察ができなかった。悔しい。

Hackathonはやっぱりkenkooooさんのやつ(AtCoder Problems)がとても良かった。すぐにブックマークした。

交流会では普段できない話ができて楽しかった。でも今思うともっといろんな人と話してみたかったなーという感じ。既にできている輪の中に入っていくのは意外と難易度が高かった。また今度誰かお話ししましょう・・。あと、お酒を飲むとすぐ顔が赤くなるのでいろんな人に心配された。もっと(レート的に)赤い人がそのへんにいるぞー。

// TCO 2015 Round 2C Easy 

    public int maxCards(int[] petr, int[] snuke) {
    	int n = petr.length;

    	int[][] dp = new int[n*2+1][101];
    	for (int i=0; i<n*2+1; i++) {
    		Arrays.fill(dp[i], -1);
    	}

    	dp[0][0] = 0;
    	int[][] cards = new int[][]{petr, snuke};

    	for (int i=0; i<n*2; i++) {
    		for (int j=0; j<n; j++) {
    			int card = cards[i%2][j];

    			for (int k=0; k<101; k++) {
    				dp[i+1][k] = Math.max(dp[i+1][k], dp[i][k]);

    				if (dp[i][k] != -1 && card > k) {
    					dp[i+1][card] = Math.max(dp[i+1][card], dp[i][k] + 1);
    				}
    			}
    		}
    	}

    	int ans = 0;
    	for (int i=0; i<101; i++) {
    		ans = Math.max(ans, dp[n*2][i]);
    	}

    	return ans;
    }