0.はじめに
Aがいきなりめんどい感じの問題で、これは・・・と思っていたら
C、Dも難問で24時から仕事(在宅)ということもあり
早々に終了してしまいました。
1.A - Range Swap
面倒なだけで難しくはなかったのですが、Aにしては30行もかかってしまいました。
考え方
1)リストAを頭から見ていき(添え字i)、iがP-1の時、A[i]とA[R-1]と入れ替えてフラグを立ててカウントに1プラス。
2)フラグが立っていたら、A[i]とA[R+カウント]と入れ替えてカウントに1プラス。
→i=Q-1だったらフラグOFF
と最初しましたが、P=Qの時うまくいかなかったので、1)の処理の時P=Qだったらフラグを立てないようにしてAC
pythonの解答例はめちゃくちゃ短かったですが・・・。
https://atcoder.jp/contests/abc286/submissions/38200374
2.B - Cat
Aより簡単じゃないの??と謎に思いつつ回答
考え方
Sを頭から回答文字列に転記していき、転記した文字が”n”かつ次の文字が"a"だったら
"y"を出力する。
で、ACでした。
https://atcoder.jp/contests/abc286/submissions/38202393
3.C - Rotate and Palindrome
愚直に計算したら、TLEになるだろうなーと思い、諦めてしまいましたが
解説を見たら愚直でも間に合うようなので、試したら意外と何とかなりました。
考え方
1)最大で、Sの半分に対してB円の操作を行えば、回文ができるのでB*(N//2)を回答ansに保持
2)文字列Sについて、先頭からと末尾からを比較して、Bの操作が何回必要かをチェックし、
Aの操作をしなかったときに必要な金額を求め、ansにmin数をセット
3)Aの操作を1回した場合のチェックを行いansにmin数をセット・・・・→N回まで繰り返す
https://atcoder.jp/contests/abc286/submissions/38239580
以上