Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

B. Longest Palindrome (Codeforces Round #620 Div. 2)

問題

https://codeforces.com/contest/1304/problem/B

問題概要

長さmの文字列がn個与えられる。それらを並べてできるだけ長い回文を作れ。

考察

まずは「ある文字列とそれを反転した文字列の組」をたくさん見つければよいです。この問題は制約がn <= 100と非常に小さいので、何も考えずに二重ループを回して全部チェックすればよいです。ここで注意すべき点としては、一度使った文字列をちゃんと記録して二度使わないようにすることですね。

それから、一つの文字列で回文になっているものについては、真ん中にひとつだけおくことができます。このチェックを「組」にならなかった文字列に対して最後に行います。こちらを後にするのは、「組」として使える文字列を単体で使ってしまうと、文字列一つ分損してしまうからです。

Submission #71138114 - Codeforces