题库/S0152

#S0152. 【25CSPS提高组】员工招聘

    传统题 难度: 提高+ 标签>一本通容斥原理状态定义、转移与边界计算顺序与答案位置
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

S0152 · 【25CSPS提高组】员工招聘

退出在线编程模式
提高+ 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交

题目描述

小 Z 和小 H 想要合伙开一家公司,共有 nn 人前来应聘,编号为 1∼n1 ∼ n。小 Z 和小H 希望录用至少 mm 人。 小 H 是面试官,将在接下来 nn 天每天面试一个人。小 Z 负责决定应聘人前来面试的顺序。具体地,小 Z 可以选择一个 11 ∼ nn 的排列 pp,然后在第 i(1≤i≤n)i (1 ≤ i ≤ n) 天通知编号为 pip_i 的人前来面试。 小 H 准备了 nn 套难度不一的面试题。由于 nn 个前来应聘的人水平大致相同,因此对于同一套题,所有人的作答结果是一致的。具体地,第 i(1≤i≤n)i (1 ≤ i ≤ n) 天的面试题的难度为 si∈{0,1}s_i ∈ \{0, 1\},其中 si=0s_i = 0 表示这套题的难度较高,没有人能够做出;si=1s_i = 1 表示这套题的难度较低,所有人均能做出。小 H 会根据面试者的作答结果决定是否录用,即如果面试者没有做出面试题,则会拒绝,否则会录用。 然而,每个人的耐心都有一定的上限,如果在他面试之前未录用的人数过多,则他会直接放弃参加面试。具体地,编号为 i(1≤i≤n)i (1 ≤ i ≤ n) 的人的耐心上限可以用非负整数 cic_i描述,若在他之前已经有不少于cic_i 人被拒绝或放弃参加面试,则他也将放弃参加面试。 小 Z 想知道一共有多少种面试的顺序 pp 能够让他们录用至少 mm 人。你需要帮助小Z 求出,能够录用至少 mm 人的排列 pp 的数量。由于答案可能较大,你只需要求出答案对 998,244,353998, 244, 353 取模后的结果。

输入

输入的第一行包含两个正整数 nn, mm,分别表示前来应聘的人数和希望录用的人数。 输入的第二行包含一个长度为 nn 的字符串 s1s_1 . . . sns_n,表示每一天的面试题的难度。 输入的第三行包含 nn 个非负整数 c1,c2,...,cnc_1, c_2, . . . , c_n,表示每个人的耐心上限。

输出

输出一行一个非负整数,表示能够录用至少 mm 人的排列 pp 的数量对 998,244,353998, 244, 353取模后的结果。

输入样例

3 2
101
1 1 2

输出样例

2

提示

【样例 1 解释】 共有以下 22 种面试的顺序 pp 能够让小 Z 和小 H 录用至少 22 人:

  1. p=[1,2,3]p = [1, 2, 3],依次录用编号为 11 的人和编号为 33 的人;
  2. p=[2,1,3]p = [2, 1, 3],依次录用编号为 22 的人和编号为 33 的人。 【样例 2 输入】
10 5
1101111011
6 0 4 2 1 2 5 4 3 3

【样例 2 输出】

2204128

【数据范围】 对于所有测试数据,保证: • 1≤m≤n≤5001 ≤ m ≤ n ≤ 500; • 对于所有 1≤i≤n1 ≤ i ≤ n,均有 si∈{0,1}s_i ∈ \{0, 1\}; • 对于所有 1≤i≤n1 ≤ i ≤ n,均有 0≤ci≤n0 ≤ c_i ≤ n。

测试点编号 n ≤ m 特殊性质
1,210 ≤n无
3 ∼ 518
6 ∼ 8$10^2$A
9 ∼ 11无
12 ∼ 14500=1
15=n
16,17 ≤nA
18 ∼ 21B
22 ∼ 25无
特殊性质 A:对于所有 $1 ≤ i ≤ n$,均有 $s_i = 1$。 特殊性质 B:在 $s_1, s_2, . . . , s_n$ 中最多只有 $18$个取值为 $1$,即$\sum_{i=1}^{n}s_i ≤ 18$。

评测数据说明

本题使用按题意独立构造、以独立程序核对的训练数据及公开样例,共7个测试点,非原站或官方原始数据。总分100分。