TopCoder SRM 513 DIV2

Rating: 926(緑)→951(緑)
System Test直前にこんな事を言ったら、本当にレーティングが上がってしまったので、このアイコンが一年間確定になってしまった。
というのは、主に僕がウケている内輪受けの話なので、別にどうで良い。

問題は前回から今回までの間にそれなりに過去問を解くなどして、うまくいけそうな感覚を得ていたにも関わらず、前回までと結果が大きく変わらなかったという事。まあ解いていたというのがDIV2Easyの過去問中心だし仕方がないといえば仕方がないのだが…
物事はそう甘くはないという事を思い知らされた。

211.43 Points

250: TrainingCamp

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;

class TrainingCamp {
	public:
	vector <string> determineSolvers(vector <string> attendance, vector <string> problemTopics) {
		vector<string> res(attendance.size(), string(problemTopics.size(), ' '));
		for (int i = 0; i < attendance.size(); ++i) { /* i-th Student */
			for (int j = 0; j < problemTopics.size(); ++j) { /* j-th Problem */
				bool f = true;
				for (int k = 0; k < problemTopics[j].size(); ++k) {
					if (problemTopics[j][k] == 'X' && attendance[i][k] != 'X') {
						f = false;
						break;
					}
				}
				if (f)
					res[i][j] = 'X';
				else
					res[i][j] = '-';
			}
		}
		return res;
	}
};

500: YetAnotherIncredibleMachine

手元でいろいろと解法を考えはしたのだが、結局のところ結論に辿り着けなかった。
複雑に考えすぎていた可能性があるが、実のところ今でもよく分かっていないので、あとで確認する。

1000: CutTheNumbers

解こうと思えば解けたと思うのだが、残り10分の所で開いたので最初から実装はしなかった。