포럼
문제 USACO0655

어휘 퀴즈

설명

베시는 곧 있을 어휘 퀴즈를 준비하는 엘시를 돕고 있다. 시험에 나올 단어들은 서로 다른 단어 \(M\)개로 이루어진 단어장에서 뽑히며, 단어장의 어떤 단어도 단어장의 다른 단어의 접두사가 아니다.

단어장이 비어 있지 않은 동안, 베시는 단어장에서 단어 하나를 골라 단어장에서 제거한 뒤, 그 단어를 왼쪽에서 오른쪽으로 한 글자씩 엘시에게 읽어 준다. 엘시의 임무는 그 단어를 유일하게 식별할 수 있게 되는 순간 베시에게 알리는 것이고, 그러면 베시는 읽기를 멈춘다.

베시는 단어장의 단어들을 \(w_1,w_2,\dots,w_M\) 순서로 읽기로 이미 정했다. 엘시가 가능한 한 빨리 답한다면, 베시는 각 단어의 몇 글자를 읽게 될까?

단어들은 압축된 형식으로 주어진다. 먼저 서로 다른 단어 \(N+1\)개(\(1\le N\le 10^6\))를 정의하고, 단어장은 그중 다른 단어의 접두사가 아닌 모든 단어로 이루어진다. 단어들은 다음과 같이 정의된다.

  • 처음에 \(0\)번째 단어는 빈 문자열이다.
  • 그다음 각 \(1\le i\le N\)에 대해, \(i\)번째 단어는 \(p_i\)번째 단어의 끝에 문자 하나를 덧붙인 것과 같다(\(0\le p_i). 문자들은 \(N+1\)개의 단어가 모두 서로 다르도록 선택된다.

Problem credits: Benjamin Qi

제약

배점

  • 입력 4-5: 길이가 \(20\)보다 큰 단어는 없다.
  • 입력 6-10: 단어장의 모든 단어의 길이의 합은 \(10^7\)을 넘지 않는다.
  • 입력 11-18: 추가 제약이 없다.

Problem credits: Benjamin Qi

입력 형식

첫째 줄에 \(N\)이 주어진다. 압축된 형식으로 주어지는 단어의 수는 \(N+1\)이다.

다음 줄에 \(p_1,p_2,\dots,p_N\)이 주어진다. \(p_i\)\(i\)번째 단어가 \(p_i\)번째 단어의 끝에 문자 하나를 덧붙여 만들어짐을 나타낸다.

다른 어떤 단어의 접두사도 아닌 단어의 수를 \(M\)이라 하자. 다음 \(M\)개의 줄에 \(w_1,w_2,\dots,w_M\)이 주어지며, 이는 \(w_i\)번째 단어가 \(i\)번째로 읽힐 것임을 의미한다. 읽을 단어들이 단어장의 단어들의 순열을 이룸이 보장된다.

출력 형식

\(M\)개의 줄을 출력한다. \(i\)번째 줄에 베시가 읽게 되는 \(i\)번째 단어의 글자 수를 출력한다.

예제 1
입력
5
0 1 2 3 4
5
출력
0
설명

There are \(6\) words labeled \(0\dots 5\). Word \(5\) is the only one that is not a
prefix of another word, so it is the only one in the bank. In general, once only
one word is left in the bank, Elsie won't need any characters to identify it.

예제 2
입력
4
0 0 1 1
4
3
2
출력
2
1
0
설명

The bank consists of words \(2\), \(3\), and \(4\).

Elsie needs two characters to identify word \(4\) since words \(3\) and \(4\) share
their first character in common.

Once Bessie reads the first character of word \(3\), Elsie has enough characters
to uniquely identify it, since word \(4\) was already read.

예제 3
입력
4
0 0 1 1
2
3
4
출력
1
2
0
문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2024-2025 > February > Silver

태그

평가 및 의견

Vocabulary Quiz

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Vocabulary Quiz

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8