포럼
문제 USACO0513

선물 재분배

설명

농부 존은 \(N\)마리의 소(\(1\le N\le 18\), 소들은 \(1\ldots N\)으로 번호가 매겨져 있다)에게 줄 \(1\ldots N\)으로 번호가 매겨진 \(N\)개의 선물을 가지고 있다. 각 소는 위시리스트를 가지고 있는데, 이는 \(N\)개 선물 전체의 순열로, 리스트에서 앞에 나오는 선물을 뒤에 나오는 선물보다 더 선호한다는 뜻이다.

농부 존은 게을러서 모든 \(i\)에 대해 선물 \(i\)를 소 \(i\)에게 그냥 배정했다. 이제 소들이 모여서 선물을 재배정하기로 했는데, 재배정 후 모든 소는 원래 받은 선물과 같은 선물을 받거나, 원래 배정받은 선물보다 더 선호하는 선물을 받아야 한다.

추가 제약이 하나 더 있다. 어떤 선물은 원래 그 선물이 배정되었던 소와 같은 품종의 소에게만 재배정될 수 있다(각 소는 홀스타인이거나 건지이다). 길이 \(N\)의 품종 문자열 \(Q\)개(\(1\le Q\le \min(10^5,2^N)\))가 주어질 때, 각 문자열에 대해 그 문자열과 일치하는 재배정의 수를 세어라.

Problem credits: Benjamin Qi

제약

채점 방식

  • \(T = 2, \ldots, 13\)에 대해, 테스트 케이스 \(T\)\(N = T + 4\)를 만족한다.
  • 테스트 케이스 14-18은 \(N = 18\)을 만족한다.

Problem credits: Benjamin Qi

입력 형식

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

다음 \(N\)개의 줄에는 각 소의 선호 리스트가 한 줄에 하나씩 주어진다. 각 줄은 \(1\dots N\)의 순열임이 보장된다.

다음 줄에 \(Q\)가 주어진다.

마지막 \(Q\)개의 줄에는 품종 문자열이 한 줄에 하나씩 주어진다. 각 문자열은 길이가 \(N\)이고 문자 G와 H로만 이루어져 있다. 같은 품종 문자열이 두 번 이상 등장하지 않는다.

출력 형식

각 품종 문자열에 대해, 그 문자열과 일치하는 재배정의 수를 한 줄에 하나씩 출력한다.

예제 1
입력
4
1 2 3 4
1 3 2 4
1 2 3 4
1 2 3 4
5
HHHH
HHGG
GHGH
HGGG
GHHG
출력
2
1
1
2
2
설명

In this example, for the first breed string, there are two possible reassignments:

  • The original assignment: cow \(1\) receives gift \(1\), cow \(2\) receives gift \(2\), cow \(3\) receives gift \(3\), and cow \(4\) receives gift \(4\).
  • Cow \(1\) receives gift \(1\), cow \(2\) receives gift \(3\), cow \(3\) receives gift \(2\), and cow \(4\) receives gift \(4\).

For the second breed string, the only reassignment consistent with it is the
original assignment.

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2021-2022 > February > Gold

태그

평가 및 의견

Redistributing Gifts

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

Log in to rate problems.

개별 의견

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

풀이 제출

Redistributing Gifts

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