今日は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問題が苦手な問題だったので撃沈したのかは微妙
今度は万全な状態で挑みたい