ABC198 E - Unique Color
이 문제를 해결하려면 구체적으로 다음과 같은 정진이 필요하다
정보 1
트리의 정의를 이해하려면 다음과 같이 하십시오.
N, M = map(int, input().split())
graph = [[] for _ in range(N)]
for _ in range(M):
a, b = map(int, input().split())
graph[a-1].append(b-1)
graph[b-1].append(a-1) #無向グラフの場合
마찬가지로 광범위한 우선 탐색과 심도 우선 탐색에 대해 글씨를 잘 몰라서 사고에 집중할 수 없는 경우도 있기 때문에 반드시 같은 방법으로 아무것도 보지 않고 쓸 수 있도록 노력해야 한다.본연에서는 복사해도 되지만 아무것도 보지 않고 쓰기를 연습하면 본연에서는 그걸로 조금 수정하면 급할 수 있으니 연습에서 이해를 중시해야 한다.(본격 공연 시 몸을 마음대로 움직이며 복제한다)나는 [도표 입문]https://kenkoooo.com/atcoder/#/contest/show/74afe01c-55a5-424d-ad1d-f0291b0f489f부터 해답하는 것이 비교적 좋다고 생각한다.
관2
1도 중요하지만 이쪽도 중요해요.여러 가지 문제를 해결했다는 것을 알아차릴 수 있을 것 같지만 정수의 등장 횟수를 관리해 점검하는 경우가 많다.나는 방법에 다음과 같은 몇 가지가 있다고 생각한다.
개인적으로 공통성이 높은 것은 카운터다.카운터의 경우 아래와 같이 배열된 index와 같은 의식이 필요 없이 어지럽게 수치를 관리할 수 있다.그리고 기본값은 0입니다. 존재 검사로 사용할 수 있습니다!
import collections
l = []
C = collections.Counter(l)
print(C[0]) #0
C[0] += 1
C[10**9] += 2
print(C) #Counter({1000000000: 2, 0: 1})
C[0] -= 1
C[10**9] -= 1
print(C) #Counter({1000000000: 1, 0: 0})
if C[1] == 0:
#存在チェックとしても使える
print("1は登場していない")
if C[10**9] >= 1:
print("10**9は一回以上登場している")
배열도 같을 수 있다.array = [0] * N
초기화, 첨가자에 대해array[1]+=1 같은 것.처음엔 그래도 될 것 같았는데.
set에 관해서는 사용할 수 있으면 멋있겠지만 숫자 관리가 위와 같이 진행되기 어려워서 개인적으로 최근까지 계속 사용하고 있는 것 같아서 그만두도록 하겠습니다.통용성 면에서 숫자의 등장 횟수를 미리 유연하게 사용하면 다른 문제에 더욱 쉽게 적용될 수 있다.특히 이번 문제도 그렇습니다. 방문 해제를 위한 내용입니다.
st.remove(1)가 닫히면
Aray[1]=2가 되면 Aray[1]=0의 일을 하기 때문에 Aray[1]-=1을 Aray[1]=1로 하려고 했는데 set이면 잘 안 된다.
이 때문에 해법이 금방 떠올랐고 코드도 맞았지만 그 수량의 관리로 인해 오류가 발생했습니다.set 사용을 멈추고 배열수로 등장하는 횟수를 판단할 수 없으며, 결국 이런 고통스러운 추억을 풀 수 없다.
정보 3
풀어.이 문제는 공부가 많기 때문에 가보로 삼아라.
이상은 1, 2, 3의 정진이었기 때문에 ABC 198 E-Unique Color가 바로 해법을 생각해냈다.다만, 2의 이해는 너무 순진해서 생각보다 고전했다.2를 전형으로 의식적으로 기억하고 문제 때문에 관리 방법을 바꾸지 않았으면 좋겠다.
Reference
이 문제에 관하여(ABC198 E - Unique Color), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/burita083/articles/b434322aa4ebce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)