[python]区間と4[白駿11659]を求める
8313 ワード
問題のショートカット
に答える
1 ≤ N ≤ 100,000
1 ≤ M ≤ 100,000
リストの長さ(N)は最大100000,区間和を求めるコマンド(M)は最大100000であるため,完全ナビゲーションを使用するとタイムアウトが発生するため,事前に累積を求めて[i,j]区間におけるリストの値を加算して問題を解決する.リストスライドを使用するとタイムアウト 積算関数を用いて区間とリストを事前に作成し、区間と を計算する.セグメント要約テーブル生成方法2
に答える
1 ≤ N ≤ 100,000
1 ≤ M ≤ 100,000
リストの長さ(N)は最大100000,区間和を求めるコマンド(M)は最大100000であるため,完全ナビゲーションを使用するとタイムアウトが発生するため,事前に累積を求めて[i,j]区間におけるリストの値を加算して問題を解決する.
import sys
N, M = map(int, sys.stdin.readline().split())
num = list(map(int, sys.stdin.readline().split()))
i = 0
while i < M:
start, end = map(int, sys.stdin.readline().split())
print(sum(num[:end]) - sum(num[:start-1]))
i += 1
import sys
from itertools import accumulate
N, M = map(int, sys.stdin.readline().split())
num = list(map(int, sys.stdin.readline().split()))
num = list(accumulate(num))
num.append(0)
i = 0
while i < M:
start, end = map(int, sys.stdin.readline().split())
print(num[end - 1] - num[start - 2])
i += 1
n = int(input())
num = list(map(int, input().split()))
num_acc = [0]
i = 0
while i < n:
num_acc.append(num_acc[-1] + num[i])
i += 1
Reference
この問題について([python]区間と4[白駿11659]を求める), 我々は、より多くの情報をここで見つけました https://velog.io/@ithingv/Python-구간-합-구하기-4-백준-11659テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol