. 최대 이익 할당 작업

王林
풀어 주다: 2024-07-18 06:44:44
원래의
980명이 탐색했습니다.

. Most Profit Assigning Work

826. 최대 이익 할당 작업

중간

n개의 일자리와 m개의 근로자가 있습니다. 난이도, 수익, 작업자의 세 가지 배열이 제공됩니다.

  • 난이도[i]와 이익[i]는 i번째 작업의 난이도와 이익이며,
  • 작업자[j]는 j번째 작업자의 능력입니다(즉, j번째 작업자는 대부분의 작업자[j]에서 어려움이 있는 작업만 완료할 수 있습니다).

모든 작업자에게 최대 하나의 작업을 할당할 수 있지만, 하나의 작업은 여러 번 완료할 수 있습니다.

  • 예를 들어 세 명의 근로자가 급여가 1달러인 동일한 작업을 시도하면 총 이익은 3달러가 됩니다. 작업자가 작업을 완료할 수 없는 경우 이익은 $0입니다.

반환근로자를 업무에 배정한 후 얻을 수 있는 최대 이익.

예 1:

  • 입력: 난이도 = [2,4,6,8,10], 이익 = [10,20,30,40,50], 작업자 = [4,5,6,7]
  • 출력: 100
  • 설명: 작업자에게는 난이도가 높은 작업 [4,4,6,6]이 할당되고 별도로 [20,20,30,30]의 이익이 발생합니다.

예 2:

  • 입력: 난이도 = [85,47,57], 이익 = [24,66,99], 작업자 = [40,25,25]
  • 출력: 0

제약조건:

  • n == 난이도.길이
  • n == 이익.길이
  • m == 작업자.길이
  • 1 4
  • 1 5

해결책:

class Solution {

    /**
     * @param Integer[] $difficulty
     * @param Integer[] $profit
     * @param Integer[] $worker
     * @return Integer
     */
    function maxProfitAssignment($difficulty, $profit, $worker) {
        $ans = 0;
        $jobs = array();

        for ($i = 0; $i < count($difficulty); ++$i) {
            $jobs[] = array($difficulty[$i], $profit[$i]);
        }

        sort($jobs);
        sort($worker);

        $i = 0;
        $maxProfit = 0;

        foreach ($worker as $w) {
            for (; $i < count($jobs) && $w >= $jobs[$i][0]; ++$i) {
                $maxProfit = max($maxProfit, $jobs[$i][1]);
            }
            $ans += $maxProfit;
        }

        return $ans;
    }
}
로그인 후 복사

연락처 링크

  • 링크드인
  • 깃허브

위 내용은 . 최대 이익 할당 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿