포럼
문제 USACO0444

잠자는 소들

설명

농부 존에게는 크기가 제각각인 소 \(N\)마리\((1 \le N \le 3000)\)가 있다. 그는 원래 각 소에게 맞춤형 외양간을 지어 주었지만, 이제 일부 소들은 자라서 자기 외양간에 들어가지 못하게 되었다. 구체적으로, 농부 존은 원래 크기가 \(t_1,t_2,\ldots,t_N\)인 외양간 \(N\)개를 지었고, 소들의 현재 크기는 \(s_1,s_2,\ldots,s_N\)이다(\(1\le s_i,t_i\le 10^9\)).

매일 밤 소들은 잠잘 외양간을 찾는 의식을 치른다. 소 \(i\)는 외양간 \(j\)에 들어갈 수 있을 때(\(s_i\le t_j\)), 그리고 그때에만 외양간 \(j\)에서 잘 수 있다. 각 외양간에는 최대 한 마리의 소만 들어갈 수 있다.

소와 외양간의 매칭이 극대(maximal)라는 것은, 외양간에 배정된 모든 소가 그 외양간에 들어갈 수 있고, 배정되지 않은 모든 소가 매칭에서 빠진 빈 외양간 어느 곳에도 들어갈 수 없는 경우를 말한다.

극대 매칭의 개수를 \(10^9 + 7\)로 나눈 나머지를 구하시오.

문제 제공: Nick Wu

제약

배점

  • 테스트 케이스 2-3에서는 \(N\le 8\)이다.
  • 테스트 케이스 4-12에서는 \(N\le 50\)이다.
  • 테스트 케이스 13-20에서는 추가 제약이 없다.

문제 제공: Nick Wu

입력 형식

첫째 줄에 \(N\)이 주어진다.

둘째 줄에 공백으로 구분된 \(N\)개의 정수 \(s_1,s_2,\ldots,s_N\)이 주어진다.

셋째 줄에 공백으로 구분된 \(N\)개의 정수 \(t_1,t_2,\ldots,t_N\)이 주어진다.

출력 형식

극대 매칭의 개수를 \(10^9 + 7\)로 나눈 나머지를 출력한다.

예제 1
입력
4
1 2 3 4
1 2 2 3
출력
9
설명

Here is a list of all nine maximal matchings. An ordered pair \((i,j)\) means that
cow \(i\) is assigned to barn \(j\).

(1, 1), (2, 2), (3, 4)
(1, 1), (2, 3), (3, 4)
(1, 1), (2, 4)
(1, 2), (2, 3), (3, 4)
(1, 2), (2, 4)
(1, 3), (2, 2), (3, 4)
(1, 3), (2, 4)
(1, 4), (2, 2)
(1, 4), (2, 3)
문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2020-2021 > December > Platinum

태그

평가 및 의견

Sleeping Cows

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Sleeping Cows

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8