ABC136 C - Build Stairs에 시달린
10641 단어 AtCoder파이썬AtCoderBeginnerContest
사쿠토, 0,1,2,3,... 라고 차례로 해 가면 좋겠지?
그런 가벼운 마음이 고생의 시작. .
BuildStairs_r0.py
n = int(input())
X = list(map(int,input().split()))
from sys import exit
for j in range(n-1):# O(10^5)
if X[j] > X[j+1]:
X[j] -=1
for k in range(n-1):# O(10^5)
if X[k] > X[k+1]:
print("No")
exit()
print("Yes")
왜 WA 모르겠어요. 구구라고 해도 모두, 뒤에서 시험하고 있다. . .
그런 자신에게 구원의 손이. .
test_case.py
#case1
4
1 2 2 1
#以下のケースも検討すべきだと思った。
#case2
4
1 3 3 2
상기를 바탕으로 재검토한다.
BuildStairs_r0.py
n = int(input())
X = list(map(int,input().split()))
from sys import exit
for j in range(n-1):# O(10^5)
if X[j] > X[j+1]:#分岐条件
X[j] -=1
#前述の分岐条件を抜けたとしても、X[j] を下げないと
#エッジケースを切り抜くことが出来ない。
elif X[j-1] <= X[j]-1:
X[j] -=1
for k in range(n-1):# O(10^5)
if X[k] > X[k+1]:
print("No")
exit()
print("Yes")
했다 (울음). . 왜 안 되었는가. 알고 기쁘다. .
그때부터 시간이 지나서 완전히 잊은 상태로 재 챌린지
더러운 코드였지만 다녔다. 솔직하게 기쁘다.
abc136c.py
N = int(input())
H = list(map(int,input().split()))
#if 文で条件する場合、確実に分かることを少しずつ切り分けると
#整理しながら進めることが出来る。
REF = H[0] #Step1:比較する基準値、最初は H[0]
for i in range(N):
if REF == H[i]: #Step2:基準値とH[i]が同じなら何もしなくて良い
pass
elif REF > H[i] and REF-H[i] > 1: #Step3:基準値 > H[i] であり、かつ差分が
print("No") # 2以上なら手の施しようがない."No" として EXIT していい
exit()
elif H[i]-REF == 1: #Step4:基準値とH[i]の差分が 1 なら引いておこう
H[i] -= 1 # 適当に見逃すと、コーナーケースを潰せない可能性が高い
elif H[i]-REF > 1: #Step5:基準値とH[i]の差分が 2 以上なら、間違いなく
H[i] -= 1 # H[i] -= 1 とした方がいい。じゃないと話が進まない(笑)
REF = H[i]
#print(H)
for j in range(N-1):
if H[j+1]-H[j]<0:
print("No")
exit()
print("Yes")
Reference
이 문제에 관하여(ABC136 C - Build Stairs에 시달린), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AKpirion/items/c63de83d07ed737d489f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)