核心结论(贪心 + 交换论证)
设多重集的整体缺席数为 m,即 m 是最小的使得 m 不在数组中的非负整数。要使前缀缺席数总和最大,前 m 个位置必须依次放入 0,1,2,…,m-1,之后的元素任意。
理由:前缀第 i 次把缺席数从 i-1 提升到 i 的唯一方式,是在此前缀里第一次补齐缺少的数 i-1。若把任何一个“首次出现的 k(k<m)”放晚了,则在它被放到位之前的所有位置,缺席数都无法达到本可达到的更大值,前缀总和严格变小。以交换为证:若在前 m 个位置存在一个不是目标的数,把它与之后最近的所需数交换不会变差,反复进行得到唯一最优前缀顺序 0,1,…,m-1。
由此,最大缺席数和可直接写成

小蓝有一叠共 n 张数字卡片,每张卡片上写有一个非负整数。他可以任意调整卡片的顺序,然后一张一张地展示。对第 i 次展示,已展示卡片集合的“缺席数”定义为:这些卡片上未出现的最小非负整数。所有展示步骤的缺席数依次构成序列 c1,c2,…,cn。
小蓝希望最大化总和 ∑i=1nci。请计算最大可能的总和,并求出达到该最大值的不同排列方案数。方案数可能很大,只需要输出它对 998244353 取模后的结果。
约束:卡片数量 n 不超过 2×105,卡面上的整数均在 0 到 109 之间(含端点)。
第一行包含一个整数 n,表示卡片的数量。 第二行包含 n 个整数,依次表示每张卡片上的数字,相邻数字之间用空格分隔。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册