QOJ.ac

QOJ

حد الوقت: 4 s حد الذاكرة: 256 MB مجموع النقاط: 100

#957. Задача о назначениях

الإحصائيات

В нашей компании есть $m$ открытых вакансий и $n \ge m$ кандидатов на эти позиции. Очевидно, мы хотим нанять лучших кандидатов. Мы не можем нанять одного и того же кандидата на две или более разные позиции, поэтому мы должны нанять ровно $m$ кандидатов. Назовем способ выбора различных кандидатов для каждой позиции назначением. Два назначения считаются различными, если существует позиция, для которой в этих назначениях наняты разные кандидаты.

Существует матрица прибыли $A$, где $A_{ij} \ge 0$ обозначает прибыль, которую мы получим от найма $j$-го кандидата на $i$-ю позицию. Мы хотим максимизировать суммарную прибыль от всех наймов. Назначение является оптимальным, если оно максимизирует сумму прибылей.

Было бы легко выбрать лучших кандидатов, зная матрицу $A$. К сожалению, мир HR не так прост, и они не могут предоставить вам матрицу $A$. Даже после собеседования со всеми кандидатами мы можем лишь сравнить, как два кандидата проявят себя на одной и той же позиции. Точнее, нам известны $m$ перестановок $P_i$ длины $n$. Для всех $1 \le i \le m$ и $1 \le x < y \le n$ выполняется $A_{iP_{ix}} > A_{iP_{iy}}$. Простыми словами, для каждой позиции мы знаем рейтинг всех кандидатов.

Кандидат является перспективным тогда и только тогда, когда существует матрица $A$, согласующаяся со всеми данными рейтингами, такая, что для этой матрицы существует только одно оптимальное назначение, и этот конкретный кандидат в нем нанят.

Вам нужно найти всех перспективных кандидатов, чтобы мы могли провести с ними более тщательное тестирование.

Входные данные

Первая строка содержит два целых числа $n$ и $m$ ($1 \le m \le 11$, $m \le n \le 1000$) — количество кандидатов и количество позиций.

Следующие $m$ строк содержат рейтинги для каждой позиции. $i$-я строка содержит перестановку $P_{i1}, P_{i2}, \dots, P_{in}$ чисел от $1$ до $n$.

Выходные данные

В первой строке выведите количество перспективных кандидатов, во второй строке выведите индексы перспективных кандидатов в порядке возрастания.

Примеры

Входные данные 1

4 2
1 2 4 3
1 3 4 2

Выходные данные 1

3
1 2 3

Входные данные 2

4 2
1 4 3 2
2 3 4 1

Выходные данные 2

2
1 2

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#317EditorialOpen题解jiangly2026-01-09 10:10:43View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.