SRM 489 div1 easy:BallsConverter
SRM 489の練習会に参加。結果はeasyだけ解いて(110ptくらい)うーんと言った感じです。なんか変わった問題(良い問題だとは思う)で慣れてないなぁと思いました。
問題:TopCoder Statistics - Problem Statement
解法:問題文の通り解釈してはいけない。実際にはどう解釈すべきかというと,ある演算$が定義されていて,A$B = Cといったような式が成り立っていて,これは演算の順番によらず同じ値になるか,という問題と解釈すべきである。それがわかれば後は簡単。
以下ソースコード
class BallsConverter { public: string theGood(vector <string> convert) { int N = convert.size(); vector<vector<int> > mat(N, vector<int>(N)); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if ('A' <= convert[i][j] && convert[i][j] <= 'Z') { mat[i][j] = convert[i][j] - 'A'; } else { mat[i][j] = convert[i][j] - 'a'+26; } } } bool ok = true; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { for (int k = 0; k < N; k++) { if (mat[mat[i][j]][k] != mat[i][mat[j][k]]) { ok = false; } } } } if (ok) return "Good"; else return "Bad"; } };