PKU 3087 Shuffle'm Up
http://acm.pku.edu.cn/JudgeOnline/problem?id=3087
- データサイズた小さいため単純にシミュレーションをするだけで間に合う
int main() { int N; cin >> N; for (int testCase = 1; testCase <= N; ++testCase) { int C; cin >> C; int permutation[256]; for (int i = 0; i < C * 2; ++i) { if (i % 2 == 0) { permutation[i] = i / 2 + C; } else { permutation[i] = i / 2; } } string s1, s2, target; cin >> s1 >> s2 >> target; string coins = s2 + s1; int answer = -1; for (int i = 1; i <= C * C * 4; ++i) { for (int j = 0; j < C * 2; ++j) { if (j % 2 == 0) { coins[j] = s2[j / 2]; } else { coins[j] = s1[j / 2]; } } if (coins == target) { answer = i; break; } s1.assign(coins.begin(), coins.begin() + C); s2.assign(coins.begin() + C, coins.end()); } cout << testCase << " " << answer << endl; } }