BOJ::部分和(no.1806)
3859 ワード
質問する
10000以下の自然数からなる長さNの数列.この数列の連続数の部分と中の和がSより大きく、最短の長さを求めるプログラムを作成してください.
入力
第1行は、N(10≦N<100000)およびS(0しゅつりょく
1行目に要求される最小長さを出力します.そのような和をすることは不可能であれば、0を出力すればよい.
🤔 の意見を打診
これはデュアルポインタを使用する典型的な問題です. コメントブログ
📌 説明する
10000以下の自然数からなる長さNの数列.この数列の連続数の部分と中の和がSより大きく、最短の長さを求めるプログラムを作成してください.
入力
第1行は、N(10≦N<100000)およびS(0
1行目に要求される最小長さを出力します.そのような和をすることは不可能であれば、0を出力すればよい.
🤔 の意見を打診
これは
📌 説明する
import sys
input = sys.stdin.readline
n,s = map(int, input().split())
nums = tuple(map(int, input().split()))
one, two = 0, 0
ans = sys.maxsize
res = 0
while True:
if res >= s:
ans = min(ans, two-one)
res -= nums[one]
one += 1
elif two == n:
break
else:
res += nums[two]
two += 1
print(ans if ans != sys.maxsize else 0)
Reference
この問題について(BOJ::部分和(no.1806)), 我々は、より多くの情報をここで見つけました https://velog.io/@wisepine/BOJ-부분합-no.1806テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol