ABC345

ardririy
·

A - Leftrightarrow

最初と最後だけ事前に判定しておいて、あとは真ん中が全部=であるかどうかを確認すればよいです。

https://atcoder.jp/contests/abc345/submissions/51278708

B - Integer Division Returns

xの正負で場合分けするとやりやすくなります。xが負なら10で割るだけでよく、正の場合は10で割ったあまりが0かどうかで分岐が一つあります。

https://atcoder.jp/contests/abc345/submissions/51284463

C - One Time Swap

あるi, jを交換したときにできる文字列は、Si ≠ Sjであるならばそれは必ずユニークです。反対に、Si = Sjである場合はもとの文字列となるので、ユニークではない場合があります。

上記を利用して、

  1. もとの文字列ではない文字列を数え上げる

  2. もとの文字列に戻る交換が存在したかを判定し、存在したら答えに1を足す

という2ステップで答えを求めることが可能です。1は、あるiに対して組となるjが|S| - i + 1通りあり、そのうち自分と同じ文字の個数を累積和として持っておけば良いです。2はが文字列に2つ以上存在する文字があかを判定すれば良いです。

https://atcoder.jp/contests/abc345/submissions/51302351

D - Tiling

枝狩り全探索だとは思うものの、実装力が足りませんでした。悲しい;-;