日立製作所 社会システム事業部 プログラミングコンテスト2020に参加しました。
成績
2完で490位でした…。
レートは微増。申し訳ねえ〜〜
A - Hitachi String
前から2文字ずつ見て、"hi"以外が来たら"No"を出力、としました。長さ10以下のhitachi文字列は"hi", "hihi", "hihihi", "hihihihi", "hihihihihi"の5つしかないので、がこれらと一致するか直接調べた方が楽かも。
B - Nice Shopping
割引券を使わなくてもよいことに注意です。入力が多くて大変ですが、頑張ります。
C - ThREE
解説AC。
のかわりに、
の各項を
で割った余りを求めることにします。このとき求める
は、「頂点
と頂点
の距離が
ならば、
かつ
」となる
です。
頂点と頂点
の距離が
となるための条件を考えると、これは適当な頂点を根としたとき、二つの頂点の「深さ」の差が
または
になることだとわかります(距離が
となるとき、
から
への最短経路は上上下、下下上、上上上、下下下のいずれかなので)。よって、深さの偶奇が異なる任意の頂点の組
について
かつ
となるような
が構築できれば、これは条件を満たします(ここまでは正しい)。そしてそのような
は、頂点
の深さが偶数なら
、奇数なら
とし、残りを
で埋めることで構築できそうです!!!!!!
そんな〜。
最後までWAが取れないままコンテストが終了。解説によると、深さが奇数の頂点、偶数の頂点のどちらかが極端に少ないとき、上記の構築方法ではうまくいかないようです。逆にそのようなときは、少ない方の頂点全てにを割り当てれば条件を満たします。なるほど…。
反省
- 行き詰まったときは思いつく限りのケースを試してみる