QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 512 MB Total points: 100

#1227. Борьба за землю

Statistics

小 S играет с 小 F в игру «斗地主».

Бедный 小 S обнаружил, что не может обыграть 小 F в карты, и решил схитрить при тасовании.

Колода содержит $n$ карт, пронумерованных сверху вниз числами от $1$ до $n$. Карта с номером $i$ имеет стоимость $f(i)$. В этой задаче возможны ровно два варианта: $f(i)=i$ или $f(i)=i^2$.

Тасование похоже на привычное нам; ниже приведено его формальное определение.

Тасование состоит из $m$ последовательно выполняемых раундов. В раунде $i$:

  1. 小 S снимает верхние $A_i$ карт. Колода разделяется на две стопки: первая содержит верхние $A_i$ карт, вторая — оставшиеся $n-A_i$ карт. Относительный порядок карт внутри обеих стопок сохраняется. В частности, при $A_i=n$ или $A_i=0$ одна стопка пуста.
  2. Затем две стопки объединяют, создавая новую, третью стопку. Если в первой стопке осталось $X$ карт, а во второй — $Y$ карт, то с вероятностью $\frac{X}{X+Y}$ берут нижнюю карту первой стопки и кладут её наверх третьей, а с вероятностью $\frac{Y}{X+Y}$ берут нижнюю карту второй стопки и кладут её наверх третьей.
  3. Действие 2 повторяют, пока обе исходные стопки не опустеют. На этом один раунд тасования завершён.

Поскольку тасование случайно, 小 S не может узнать, какая именно карта окажется в определённой позиции. Но он хочет спросить у вас математическое ожидание стоимости карты в некоторой позиции после $m$ раундов тасования. Всего 小 S задаст $Q$ таких вопросов.

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

Данные считываются из файла landlords.in.

Первая строка содержит три положительных целых числа $n,m,type$ — количество карт, количество раундов тасования и тип функции $f(i)$. При $type=1$ имеем $f(i)=i$, а при $type=2$ имеем $f(i)=i^2$.

Следующая строка содержит $m$ целых чисел $A_1,\ldots,A_m$.

Следующая строка содержит положительное целое число $Q$ — количество вопросов 小 S.

Каждая из следующих $Q$ строк содержит одно положительное целое число $c_i$: 小 S хочет узнать математическое ожидание стоимости карты в позиции $c_i$, считая сверху вниз. Гарантируется $1\le c_i\le n$.

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

Результаты выводятся в файл landlords.out.

Выведите $Q$ строк, в каждой — одно целое число, представляющее ответ по модулю $998244353$.

То есть, если ответ в виде несократимой дроби равен $\frac ab$, где $a$ и $b$ взаимно просты, выведите целое число $x$, удовлетворяющее $bx\equiv a\pmod{998244353}$ и $0\le x<998244353$. Можно доказать, что такое целое число $x$ единственно.

Примеры

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

4 1 1
3
1
1

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

249561090

Примечание

С вероятностью $\frac14$ итоговый порядок сверху вниз равен $\{1,2,3,4\}$.

С вероятностью $\frac14$ итоговый порядок сверху вниз равен $\{1,2,4,3\}$.

С вероятностью $\frac14$ итоговый порядок сверху вниз равен $\{1,4,2,3\}$.

С вероятностью $\frac14$ итоговый порядок сверху вниз равен $\{4,1,2,3\}$.

Поэтому с вероятностью $\frac14$ в первой позиции находится карта $4$, а с вероятностью $\frac34$ — карта $1$. Математическое ожидание стоимости первой карты равно $\frac74$.

Чтобы нагляднее показать тасование, ниже изображён процесс, приводящий к результату $\{1,4,2,3\}$.

problem_1227_d72860824276dd036b124cb763e40b64.png

Пример 2

См. файлы landlords/landlords2.in и landlords/landlords2.ans в каталоге участника.

Пример 3

См. файлы landlords/landlords3.in и landlords/landlords3.ans в каталоге участника.

Ограничения

Для всех тестов $3\le n\le10^7$, $1\le m,Q\le5\times10^5$, $0\le A_i\le n$, $type\in\{1,2\}$.

Ограничения отдельных тестов приведены в таблице:

Тест $n$ $m$ $type=$ Другие свойства
1 $\le10$ $\le1$ 1 Нет
2 $\le80$ $\le80$
3 2
4 $\le100$ $\le5\times10^5$ Все $A_i$ одинаковы
5 $\le10^7$ 1 Нет
6
7
8 2
9
10

Обратите внимание: условие $Q\le n$ не гарантируется.

Приведём определение математического ожидания $\mathbb E[x]$ дискретной случайной величины $X$.

Пусть возможные значения $X$ равны $X_1,X_2,\ldots,X_k$, а $\Pr[X_1],\Pr[X_2],\ldots,\Pr[X_k]$ — вероятности соответствующих значений. Тогда математическое ожидание $X$ равно

$$ \mathbb E[x]=\sum_{i=1}^k X_i\Pr[X_i]. $$

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.