통계 문제
시간 제한 : 2,000분의 4,000 MS (자바 / 기타) 메모리 제한 : 65,535분의 131,070 K (자바 / 기타)
총 제출 (들) : 69,587 허용 제출 (들) : 24087
문제 설명
이그나티우스는 최근 문제가 발생하여, 교사는 그에게 (이 단어 표시의 더 반복 수 없습니다 소문자), 지금은 교사가 단어의 수 (단어 자체로 시작하는 문자열을 계산하는 그에게 물었다 많은 단어 자체입니다했다 접두사).
입력
입력 데이터의 첫 번째 부분은 단어 목록, 라인 당 하나 개의 단어, 10 이하의 워드 길이이고, 그들은 이그나티우스 단어에 대한 통계 교사를 나타내고, 빈 행은 테이블의 단어를 나타낸다. 두 번째 부분은 일련의 . 질문은, 라인 질문 당 하나는, 각 질문은 문자열입니다
참고 :이 제목은 테스트 데이터의 집합, 파일의 마지막에 처리합니다.
참고 :이 제목은 테스트 데이터의 집합, 파일의 마지막에 처리합니다.
산출
각 질문에 대한 문자열에 주어진 번호는 접두사 단어입니다.
샘플 입력
바나나 밴드 꿀벌 절대 ACM BA B 대역 ABC
샘플 출력
0 1 2 3
사용법 #include <iostream> #INCLUDE <CString을> #INCLUDE <cstdio> #INCLUDE <cmath> #INCLUDE <cstdlib> CONST의 INT의 maxn = 1000000 ; INT 트라이 [maxn] [ 27 ]; int로 ojbk [maxn]; INT의 색 [maxn]; INT의 K = 1 ; 사용하는 네임 스페이스 표준을; 보이드 _insert ( 숯 *의 w) { INT LEN = strlen 함수 (w); INT의 p = 0 ; // 节点. 대한 (값 int = 1을 0 ; I <렌; 내가 ++ ) { INT의 온도 = w [I] - ' ' ; 만약 (! 트라이의 [피] [임시]) { 트라이 [P] [임시] = K ++ ; } P = 트라이 [P] [임시]; ojbk [P] ++ ; } 색 [P]는 = 1 ; } INT의 쿼리 ( 숯 *의 S) { INT LEN = strlen 함수 (S); INT ANS = 0 ; INT p = 0 ; 위한 ( int로 I = 0 내가 ++; I <렌 ) { INT의 - 임시가 S [I] ' '을 ; 만약 (! 트라이 [P]가 [온도가]) { 반환 0 ; } P = 트라이 [P] [임시]; } 리턴 [P]를 ojbk; } INT 의 main () { 숯 워드 [ 15 ]; memset 함수 (ojbk, 0 , sizeof 연산자 ojbk); memset 함수 (색상, 0 , 를 sizeof 색); 동안 (가져 (워드)) { INT LEN1 = 나 strlen (워드); 경우 (LEN1의 == 0 ) 휴식 ; _insert (워드); } 동안 ((워드)을 얻는다) { 의 printf ( " % D \ 없음 " 쿼리 (단어))을 } 반환 0 ; }