CF1784F Minimums or Medians

题目描述

Vika 有一个包含所有从 $1$ 到 $2n$ 的连续正整数的集合。 Vika 恰好会进行 $k$ 次如下两种操作中的一种: - 取出当前集合中最小的两个整数并将它们移除; - 取出当前集合中中位数的两个整数并将它们移除。 这里的中位数指的是:如果将集合中的元素按升序排列,正好位于中间的两个整数。注意,Vika 的集合大小始终为偶数,因此中位数的两个整数是唯一确定的。例如,集合 $\{1, 5, 6, 10, 15, 16, 18, 23\}$ 的两个中位数是 $10$ 和 $15$。 经过 $k$ 次操作后,Vika 最终能得到多少种不同的集合?请输出这个数对 $998\,244\,353$ 取模的结果。若两个集合中存在某个整数属于其中一个集合但不属于另一个集合,则认为这两个集合不同。

输入格式

一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 10^6$)。

输出格式

输出一个整数,表示 Vika 最终能得到的不同集合的数量,对 $998\,244\,353$ 取模。

说明/提示

在第一个样例中,Vika 的初始集合为 $\{1, 2, 3, 4, 5, 6\}$。她可以移除最小的两个数,得到 $\{3, 4, 5, 6\}$,也可以移除中位数的两个数,得到 $\{1, 2, 5, 6\}$。 在第二个样例中,Vika 最终可以得到 $\{1, 6\}$、$\{3, 6\}$ 或 $\{5, 6\}$。例如,Vika 可以先移除最小的两个数($\{1, 2, 3, 4, 5, 6\} \rightarrow \{3, 4, 5, 6\}$),然后移除中位数的两个数($\{3, 4, 5, 6\} \rightarrow \{3, 6\}$)。 在第三个样例中,无论 Vika 如何选择,最终都会得到一个空集合。 由 ChatGPT 4.1 翻译