SRM 394 - Div1 250 Rough String 질문입니다.

  • soyoja
    soyoja

    Editorial 을 읽고 다른 사람들 풀이를 봐도 좀 알듯 말듯 하네요 -_-;
    모든 경우를 다 돌리는 방법과 Greedy 로 푸는 방법이 있는 것 같은데, 푸신 분들 이 문제 해법 좀 자세히 설명 부탁드려요...
    ps ) 요새 algospot 이 좀 침체? 된 느낌인데... 질문이라도 열심히 올리겠슴다.. ㅋㅋ

    [이 글은 과거 홈페이지에서 이전된 글입니다. 원문보기]

    16년 전
3개의 댓글이 있습니다.
  • Neon
    Neon

    제맘대로 설명을 하자면... 먼저 'a'~'z'의 갯수를 세서 배열에 저장합니다. 이제 roughness는 cnt 배열 중 가장 큰 값 - cnt 배열 중 0보다 크면서 가장 작은 값이 될텐데, 우리가 개입할 수 있는 건 cnt 배열의 각 element를 n개까지 맘대로 뺄 수 있습니다.
    roughness를 최소화 하기 위해서는 cnt 배열 중 가장 큰 값을 줄이거나, cnt배열 중 0보다 크면서 가장 작은 값을 키우는 방법이 있는데, 이 비용이 n보다 작으면서 가장 roughness를 최소화할 수 있는 방법을 찾으면 됩니다.


    16년 전 link
  • Neon
    Neon

    cnt배열중 가장 큰 값을 X 이하로 줄이기 위해서는 cnt 중 X보다 큰 모든 값들에 대해 cnt[T] - X를 합하면 됩니다.
    cnt 배열중 가장 작은 값을 Y 이상으로 올리기 위해서는 cnt중 Y보다 작은 모든 값들에 대해 cnt[T]를 더하면 됩니다
    이제 모든 X랑 Y에 대해 이짓을 해보고 가능한 것중 가장 좋은걸 return하면 됩니다.


    16년 전 link
  • soyoja
    soyoja

    풀었습니다.. 답변 감사합니다.. ;)


    16년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.