SRM+415

Editorial

= 2013 / 03 / 10 = =ShipLoading=

Prob
크레인별 최대중량과 짐들의 무게가 주어진다. 1유닛시간 1크레인 1짐일 때 최소시간.

Sol
그리디.

=CollectingPostmarks=

Prob
Postmark 32개의 가격과 가치, 가지고 있는 초기 Postmarks, 목표 가치 K가 주어진다. 사고팔기를 반복하여 목표가치 K를 달성하기 위한 최소 추가돈.

Sol
Meet in the middle. 2 ^ 16 별로 2가지를 만든 뒤에 검색하면 된다. 검색시 목표보다 큰 가치중에서 적은 가격도 고려해야하며, 필요 K가 0일 경우는 무조건 0임을 주의.

= AlienDictionary =

Prob
A or B로만 이루어지는 n길이의 스트링을 만들려 하는데, k<=17 길이의 forbiddenstring들이 50개 주어진다. forbiddenstring을 포함하지 않은 스트링들만 valid할 때, 주어지는 50개의 ai <= 1,000,000,000 에 대해서 사전순 ai번째 단어를 출력.

Sol
스트링이 A or B이기 때문에 모든 k 길이의 string을 나타낼 수 있다. dp[length][firstKStat] 을 통해서 금지 스트링을 제외한 가짓수를 구할 수 있고, 이후에는 카운팅하면 끝. 제네럴하고 서로 다른 k에 대한 문제라면 아호코라식으로 해결해볼 수 있을 것 같다. 공부해야.