아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

DNA の合成 (DNA synthesizer)

시간 제한1초메모리 제한1024 MB

요약
목표 DNA 문자열과 길이 20 이하의 조각 5만 개 이하가 주어질 때, 겹쳐 이어 붙여 목표를 만들 수 있는 최소 조각 수를 구한다.
난이도

보통10점 중 7점

유형
최단 경로, 문자열 매칭, 동적 계획법, BFS
정답자
아직 제출이 없습니다

문제

A,T,G,C からなる DNA 鎖が 2 本あるとき, 一方の先頭と, 他方の末尾の部分に 1 文字以上の連続する共通 部分を持つものをつなげて新しい DNA 鎖を合成する方法が開発された. このとき共通部分は一つにまとめ られる. たとえば,TTTATGC と ATGCAAA は,前者の末尾と後者の先頭に共通部分 ATGC を持つので,つ なげて TTTATGCAAA を合成できる. また,AAA を 2 つ用いて,AAAA と AAAAA のどちらも合成するこ とができる.今,新薬開発のために,研究室にあるいくつかの素 DNA 鎖から,ある DNA 鎖を合成したい.

研究室には N 種類の素 DNA 鎖がある.上記の方法で素 DNA 鎖をつなぎあわせて目的の DNA 鎖を合成 するとき, 最小で何本の素 DNA 鎖が必要となるかを求めるプログラムを作成せよ. ただし,素 DNA 鎖の備 蓄には余裕があるので,同じ種類の素 DNA 鎖を何度でも使うことができる.また,全ての採点データにお いて,目的の DNA 鎖を得る素 DNA 鎖の組み合わせが存在する.

입력

標準入力から以下の入力を読み込め.

  • 1 行目には整数 N が書かれている.
  • 2 行目には,A,T,G,C からなる文字列が書かれており, 目的の DNA 鎖を表す.
  • 続く N 行は,1 行につき 1 つの A,T,G,C からなる文字列が書かれており,それぞれ 1 つの素 DNA 鎖 を表す.重複する素 DNA 鎖は存在しない.

출력

標準出力に必要となる素 DNA の本数の最小値を表す 1 つの整数を出力せよ.

제한

  • 素 DNA 鎖の種類数 N は 50,000 以下である.
  • 合成したい DNA 鎖の長さは 150,000 以下である.
  • 素 DNA 鎖の長さは 20 以下である.

예제3

  1. 예제 1

    입력
    5
    ATATATGCCCAT
    ATAT
    ATG
    GCCC
    GCCCAT
    CAT
    
    예상 출력
    4
    
  2. 예제 2

    입력
    1
    AAAAAAAAAA
    AAA
    
    예상 출력
    5
    
  3. 예제 3

    입력
    2
    ATATATATAT
    ATA
    TAT
    
    예상 출력
    5