くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

エイシング プログラミング コンテスト 2020 参加ログ・感想

AISing Ltd.が主催する個人戦プログラミングコンテストに参加した。企業主催のコンテストは初めて参戦。 DがTLEで死んだが、まぁ今の自分の感じではこんなもんだろう。


内容

  • Python3でやっている。
  • 参加ログ。
  • 所感。
  • コンテスト中に何を考えたか。
  • コンテスト後に解説をみたり、少し整理したりしたくらいの内容。
  • 問題の詳細で細かく書こうと思うものは別記事とする。
  • E以上はとりあえず現状自力では無理なのでDまで。解けるようになってきたら更新するかも

結果

AB2完したのが5分くらい。自分の中でも最低の出来具合。ずっとABCでハマっていたがみた瞬間に、全パターンを計算すればいいだけと思って無事30分くらいでC完。Dはサンプルは通ったがsubmitはTLE。bit系の操作に慣れないせいか、bitの文字列から10進数の変換をint(bit_str, 2)でできると気付くまでにめちゃかかり、本来のあまりの回数の計算もよく無いんだろうなぁと思いながら終了。

今回はまぁまぁ。
最近全然めっきりだったのでABC完だけでも十分だしDも解釈はできているのでいい感じの実装を復習する。


どう考えたか + α

A - Number of Multiples

問題タイプ:全探索 {\displaystyle l}から{\displaystyle r}までdで割ってあまり0をカウント

l, r, d = map(int, input().split())
cnt = 0
for i in range(l, r+1):
    if i % d == 0:
        cnt += 1
print(cnt)

B - An Odd Problem

問題タイプ:index系 単純に何番目が奇数で、実際の値も奇数であるものを全探索する。 注意するのは何番目が奇数ということはindexは偶数であること。

n = int(input())
A = [int(x) for x in input().split()]
cnt = 0
for idx, a in enumerate(A):
    if idx % 2 == 0 and a % 2 != 0:
        cnt += 1
print(cnt)

C - XYZ Triplets

問題タイプ:全探索
制約が小さいので全探索でいけるとは思った。制約から{\displaystyle 1 \leqq x,y,z \leqq 100}まで計算すればいいんだろうなと思ってそのまま全探索。これは別記事にする。

追記:

blacktanktop.hatenablog.com


D - Anything Goes to Zero

問題タイプ:bit系
方向性としては、bit文字列の左から0or1を反転させて、それを10進数に戻して、関数通り計算して、回数を数えるだけと思ったが、関数通りに計算するところが重いのかTLEで終わった。というか、{\displaystyle '011'}{\displaystyle 3}へ変換するには以下でいいということを今更知った。。。

int('011', 2)

おわりに

当面の目標は、ABC完答できればDまでということで、一応目標通り行った。日々精進をしているおかげか少し感覚を掴んできた(かな?)少しうまくいかないことが多かったので、次も頑張ろうと思う。やっぱりbitの考え方というか操作方法を理解していないので、今回の問題でしっかり学び直す。