AtCoder Beginner Contest ABC429 解法メモ
文中で使用しているのは、たとえCodonが使えようとも、同じくPythonライクでAtCoderに最適な言語の1つNimです
ABC429
ABC429A - Too Many Requests
解法
1..Nの
echo if i<=M: "OK" else: "Too Many Requests"とすればよい
ACコード
ABC429B - N - 1
解法
echo if (0..<N).toSeq.anyIt(A.sum-A[it]==M): "Yes" else: "No"とすればよい
ACコード
メモ
ACコード
ABC429C - Odd One Subsequence
解法
A.toCountTableとして、ある種類の数字
答えは、
ある種類から
残りの
全種類にわたって足し合わせたものになる
すなわち、
for k,v in A.toCountTable: a+=v*(v-1) div 2*(N-v)となる
ACコード
メモ
残りの
ABC429D - On AtCoder Conference
解法
ある位置をスタートし、出会った人数が
どこに何人立っているかを整理してしまうことで、
人のかたまりの間のどこからスタートしたところで、初めに人と出会う地点まで等しくなることに気付く
さらに、実際には、高橋君は
CountTableの要素数
実際には周回するが、各keysに
ACコード
メモ
CountTableすべきことはすぐにわかったが、入力例
keys単位で算出することにも気付くが、
もちろん、
ACコード
ABC429E - Hit and Away
解法
すべての安全な頂点からの多始点BFSを考えれば、危険な頂点に最短、次点で到達した
ただし、相異なる安全な頂点からの到達でなくてはならないので、実装においては、
Dequeに(現在の頂点番号,出発した頂点番号,経過時間)のタプルを持たせ、
頂点到達記録用の
訪問を許すのは、その頂点の
答えは、BFS終了後、
ACコード
メモ
危険な頂点からBFSし、安全な頂点に
多始点BFSも考えたが、やはり危険な頂点を始点としたため、実装できなかった
Discussion