ABC198 E - Unique Color

8126 단어 AtCodertech
질문 링크
이 문제를 해결하려면 구체적으로 다음과 같은 정진이 필요하다
  • 나무의 정의 이해
  • 색상(정수)을 이해하는 관리 방법
  • 한 획으로 나무를 스캐닝하는 방법을 이해한다
  • 정보 1


    트리의 정의를 이해하려면 다음과 같이 하십시오.
  • 무방향도, 유방향도 문제를 해결하고 도표에 대한 접촉감을 제거한다
  • 1.해답에서'목'이라는 단어가 문장에 나타나면 늘'목'의 느낌이 든다
  • 무정방향 도표처럼 빈펜으로 광범위한 우선 탐색 등 연습을 하는 과정에서 도표의 문제를 이해할 때까지 해답했다
  • '트리 그래프 차이', 책 읽기 등을 보내면서'나무'에 대한 해상도가 점점 높아졌다
  • '나무는 N개의 정점에 N-1개의 변이 있고 폐쇄로가 없다'는 말은 자신의 경험으로 서서히 깨닫게 된다
  • 나무, 도표를 좋아하게 된 문제
  • 첫걸음은 관문이다.도표는 input으로 연결도 기억하기 어려워 사고를 포기하기 쉽다.따라서 우선 첫 번째 단계를 돌파하기 위해 아래의 내용을 보지 말고 쓸 수 있는 것을 추천한다.input에서 고민을 하면 문제를 해결할 동력이 없고 못하는 의식이 있기 때문에 input을 해결하는 것이 좋은 방법이라고 생각합니다.마지막으로 복제해도 되고, 머릿속에서 다음 내용을 반복하는 것도 좋은 연습이다.
    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도 중요하지만 이쪽도 중요해요.여러 가지 문제를 해결했다는 것을 알아차릴 수 있을 것 같지만 정수의 등장 횟수를 관리해 점검하는 경우가 많다.나는 방법에 다음과 같은 몇 가지가 있다고 생각한다.
  • 배열된 색인의 숫자를 관리하고자 하는 숫자에 비유한다. Aray[3]+=1.
  • set을 사용하여 멋지게 관리
  • 카운터로 간편하게 관리
  • 사전을 통해 관리
  • 할 수 있는 일은 거의 똑같지만 제가 잘하는 관리법을 익히는 게 중요하다고 생각해요.또한, 배열이라면 10^9 같은 것을 다 넣으면 넣을 수 없기 때문에 사전으로 관리할 필요가 있다.관리하는 방법은 제대로 파악하지 못하면 본공연에서 아픈 추억이 많을 것이다.이번에도 이 관리 때문에 풀지 못했어요...나는 정수의 관리 방법이 전형적인 것이라고 생각한다.
    개인적으로 공통성이 높은 것은 카운터다.카운터의 경우 아래와 같이 배열된 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를 전형으로 의식적으로 기억하고 문제 때문에 관리 방법을 바꾸지 않았으면 좋겠다.

    좋은 웹페이지 즐겨찾기