読者です 読者をやめる 読者になる 読者になる

ferinの競プロ帳

競プロについてのメモ

ABC017を解いてみた

競技プログラミング

A問題

 条件に従って処理して出力しました。

a, b = map(int, input().split())
c, d = map(int, input().split())
e, f = map(int, input().split())

#小数にならないことは保証されているので切り捨てとかは気にしないで大丈夫
print(int((a*b/10)+(c*d/10)+(e*f/10)))

B問題

 場合分けして文字列の処理を行いました。

import sys

x = input()
flag = 0

for i in range(len(x)):
    # ch だったら2回分先に送る
    if flag == 1:
        flag = 0
        continue
    # ch かどうかの確認のため
    if i != (len(x) - 1):
        s = x[i] + x[i+1]

    # o, k, u のいずれかであったらループを続ける
    if x[i] == 'o' or x[i] == 'k' or x[i] == 'u':
        continue
    # ch だったら2回分ループを回すよう flag=1 に
    elif s == 'ch':
        flag = 1
        continue
    # どれでもなければchoku語ではないのでNOを出力して終了
    else:
        print('NO')
        sys.exit()

print('YES')

C問題

 全探索の部分点解法しか思い浮かびませんでした。解説を読んでいもす法を用いた実装をしました。

D問題

 動的計画法を使う部分点解法しか思い浮かびませんでした。しゃくとり法について蟻本で読んで実装しました。