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