1365
1101 ワード
答えを出す.
左の電線が右の電線の番号より大きいという意味です.(1->2,2->3,3->4,4->1の場合、4->1の電線が残りの電線を通過する)リストに入力し、このような状況がどれだけあるかを特定します.反復器iは左電線番号であるため、i回りに回転するときのiインデックスの値がiより小さい場合、res+=1
説明する.
正しい接続線を見つけます.
右連の番号をもらって、インデックスが増えるにつれて値が増えても困るので、番号が大きくならないまで数えておけばいいのです
左の電線が右の電線の番号より大きいという意味です.(1->2,2->3,3->4,4->1の場合、4->1の電線が残りの電線を通過する)リストに入力し、このような状況がどれだけあるかを特定します.反復器iは左電線番号であるため、i回りに回転するときのiインデックスの値がiより小さい場合、res+=1
import sys
n = int(input())
arr = list(map(int, sys.stdin.readline().split()))
res = 0
for i in range(len(arr)):
if arr[i] < i:
res += 1
print(res)
エラー:左の番号が次の索引コードより大きい番号に接続されている場合、ワイヤがねじれます.説明する.
正しい接続線を見つけます.
右連の番号をもらって、インデックスが増えるにつれて値が増えても困るので、番号が大きくならないまで数えておけばいいのです
import sys
input = sys.stdin.readline
def binary_search(left, right, target):
while left < right:
mid = (left + right) // 2
if lis[mid] < target:
left = mid + 1
else:
right = mid
return right
N = int(input())
numbers = list(map(int, input().split()))
lis = []
lis.append(numbers[0])
for i in range(1, N):
if lis[-1] < numbers[i]:
lis.append(numbers[i])
else:
j = binary_search(0, len(lis)-1, numbers[i])
lis[j] = numbers[i]
print(N - len(lis))
Reference
この問題について(1365), 我々は、より多くの情報をここで見つけました https://velog.io/@changing/1365テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol