くろたんく雑記帳

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

MENU

AtCoder Beginner Contest 175 参加ログ・感想

また、ABまで。しかもBで相当時間かけてしまってCの時間が足りなかった。まだまだ問題をこなす量が足りないのを実感。まぁでもCはちょっとだった。Dはとりあえず通る実装かけたけどこれをコンテスト中に書くのは辛い印象。


内容

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

結果

Aで?ってなって焦って普通に書き出す。Bで三角形問題出て、過去問の復習ちゃんとやっておけばよかったと後悔。でも今回自力でいけたので、三角形問題は理解できたと思う。Cは最後の条件分岐まではいけたが時間足らず。Dは戦略を考えたがまぁ無理だと思ってやめた。


どう考えたか + α

A - Rainy Season

問題タイプ:条件分岐

{\displaystyle s}に'R', 'RR', 'RRR'を含むかどうかでif文で分岐すればいい。

s = input()
if 'RRR' in s:
    print(3)
elif 'RR' in s:
    print(2)
elif 'R' in s:
    print(1)
else:
    print(0)

B - Making Triangle

問題タイプ:しゃくとり

与えられた長さをソートして、小さいものから固定しながら選ぶ、そのindexを{\displaystyle a, b, c}とすると a < b < c となるようにとる。さらに選んだものの長さが同じじゃないということと、2辺の合計が残り1辺よりも大きいのが条件(三角形の条件。4, 9, 5が選ばれても三角形にならない)

n = int(input())
L = sorted([int(x) for x in input().split()])
cnt = 0
for a in range(n-2):
    for b in range(a+1, n-1):
        for c in range(b+1, n):
            # 同じのものがなくて、2辺の合計が残り1辺よりも大きいのが条件
            # sample1で [tex:{\displaystyle i, j, k}]の候補に(1, 3 ,5)が含まれていない 
            # つまり長さでいうと(4, 9, 5)は三角形になり得ない。
            # 直線になってしまうということ。
            if len(set([L[a], L[b], L[c]])) == 3 and L[a] + L[b] > L[c]:
                cnt += 1
print(cnt)

C - Walking Takahashi

問題タイプ:modと条件分岐({\displaystyle k}が小さい時、0を越えるべきかどうか)

単純に、制限的に{\displaystyle x}から0に向かって動く。動ける回数や動ける距離によって、ただそれだけで終わるか、動ける回数が余ってしまう場合を適切に処理する。これは別記事にする。

追記:

blacktanktop.hatenablog.com


D - Moving Piece

問題タイプ:ある値を2の累乗の形でどう表すか、条件分岐の嵐

制約が大きいのでいかに少ないループで全てのパターンを表すかを考える必要がある。全てのスコアが負であれば最大のスコア。そうでない場合は{\displaystyle 2^i}回移動した時の状況をリストに保持するやり方でやればよかった。ただ煩雑ではある。これは別記事にする。

追記:

blacktanktop.hatenablog.com


おわりに

当面の目標は、ABC完答できればDまでということだが、Cがもう少しだったが、焦って条件分岐ミスと計算式のミスでアウトだった。 Cは解けないとダメだった。まぁ、今回は三角形の長さ選ぶ問題が自力で理解できただけでも成果と思おう。