0
0

前回の振り返り

今日はABC開催日だったので参加結果を振り返る

今日は21時に予定があったのでunratedで参加
予定終了後に残り時間少ないまま頑張って解いたけど
コンテストの時間内で解けたのAとCの2問というね…

以降では各問題の振り返り、感想をまとめる。

A

listのinsert始めて使ったかも

ソースコード

main.py
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

def main():
    N, K, X = rLI()
    A = rLI()
    
    A.insert(K,X)
    
    print(*A)
    
if __name__ == '__main__':
    main()

B

こういう問題はまじで拒否反応でてくるからつらい

C

値が変化する可能性があるのは最大値・最小値から順番に消去した場合で
それぞれを合計でK個消せるから
最大値からK個消した場合
最小値からK個消した場合
最大値からK-1個、最小値から1個消した場合
最小値からK-1個、最大値から1個消した場合
最大値からK-2個、最小値から2個消した場合
最小値からK-2個、最大値から2個消した場合

と順番に適応した場合を考え、求める数の最小値を探索する

ソースコード

main.py
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)


def main():
    N, K = rLI()
    A = rLI()
    
    B = sorted(A)
    
    lowB = B[:K+1]
    upB = B[-K-1:][::-1]
    
    ans = max(A) - min(A)
    for i in range(K):
        ans = min(ans,upB[i]-lowB[-(i+1)])
        ans = min(ans,upB[-(i+1)]-lowB[i])
    
    print(ans)
if __name__ == '__main__':
    main()

D

問題見たのが終了15分という無理ゲー
パット見で解けないのでスルー

E

グラフ系の問題はまだできませんorz

F

こういう簡単に解けそうでむずい問題に時間つい食ってしまう。

適当にふるいとsetの組み合わせしようと考えたけど時間切れ。

G

ここらへんの判定がちゃんとできると囲碁のAIが作れるのかね。

まとめ

ABC361に参加した結果AとCの2問しか解けなかった。

予定こなした後の参加だったので調子出なかったのか
B問題が苦手な問題だったので撃沈したのかは微妙

今度は万全な状態で挑みたい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0