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

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

Zalagaonica

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

요약
문자열을 연속한 비어 있지 않은 조각으로 자르고, 각 조각은 서로 다른 문자의 개수 d에 따라 C[d]를 벌 때 얻을 수 있는 최대 금액을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 해시맵, 문자열
정답자
아직 제출이 없습니다

문제

Dođe Stjepan jednog utorka kod Ricka u Pawn Stars zalagaonicu držeći papirić u ruci na kojem piše jedna riječ i pita Ricka koliko kuna može dobiti za taj papirić. Kaže mu Rick: “Za taj papirić, kao i za svaki drugi koji doneseš, možeš dobiti C[x] kuna gdje je x broj različitih slova napisanih na papiriću.”

Nakon što je to čuo, Stjepan brzo shvati da može zaraditi mnogo novca ako svojim škarama, koje uvijek nosi sa sobom, razreže papirić na više dijelova i onda proda svaki dio posebno. Jedino što je važno poslije rezanja je da svaki papirić sadržava barem jedno slovo i da svaki papirić sadržava uzastopna slova riječi koja je bila napisana na početku. Od svog tog ushićenja, on nije sposoban izračunati koliko najviše novaca može zaraditi pa moli tebe da napišeš program koji to ispisuje.

입력

U prvom je retku prirodan broj NN (1≤N≤261 ≤ N ≤ 26), broj različitih slova napisanih na papiriću.

U drugom retku je niz CC koji sadrži NN prirodnih brojeva manjih od 10910^9.

U trećem retku je riječ SS (1≤∣S∣≤1061 ≤ |S| ≤ 10^6) koja je na početku napisana na papiriću. Riječ će sadržavati samo mala slova engleske abecede.

출력

U prvi redak ispiši prirodan broj, odgovor na pitanje iz teksta zadatka.

힌트

Opis prvog probnog primjera: Optimalno je razrezati papirić na pola riječi (abc|bca). Tako se dobiju dva papirića koja će Stjepan odnijeti Ricku.

Opis drugog probnog primjera: Optimalno je razrezati papirić na (a|a|ab|b|ba|a|ab|b|ba|a|a)

Opis trećeg probnog primjera: Optimalno je razrezati papirić na (ab|ab|ab|ab|a).

예제3

  1. 예제 1

    입력
    3
    1 2 10
    abcbca
    
    예상 출력
    20
    
  2. 예제 2

    입력
    2
    1 14
    aaabbbaaabbbaaa
    
    예상 출력
    63
    
  3. 예제 3

    입력
    2
    1 3
    ababababa
    
    예상 출력
    13