パイ
1107 ワード
import bisect
対分はバイナリ検索アルゴリズムを実現するモジュールであるbisect.bisect関数は、ソートされたリストに値を挿入したときにソートを維持できるインデックスを返します.
https://www.acmicpc.net/problem/11053
dp問題に分類されていますが、対分的に解答しました
bisect_left(a, x)
検索リストaに挿入するデータxの一番左のインデックスは、例えば、与えられた入力が「10 20 10 30 20 50」である場合
リスト[0]、リスト[1]番号(dp=[10,20])が順番に挿入されます.
リスト[2]に遭遇した場合、前の位置の値より小さいため、挿入リスト[2]に挿入されたインデックスを見つけることができます.
idx = bisect.bisect_left(dp, arr[i])
この場合、idxは0(現在のdp[0]回は10)であるペアリングを使用して解く
import sys
import bisect
n = int(input())
seq = list(map(int, sys.stdin.readline().split()))
dp = [seq[0]]
for i in range(1, n):
if seq[i] > dp[-1]:
dp.append(seq[i])
else:
idx = bisect.bisect_left(dp, seq[i])
dp[idx] = seq[i]
print(len(dp))
Reference
この問題について(パイ), 我々は、より多くの情報をここで見つけました https://velog.io/@dmqm0226/파이썬-bisectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol