CF2070F.Friends and Pizza
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Monocarp 有 n 个披萨,第 i 个披萨包含 ai 片。披萨用从 A 开始的拉丁字母大写字符表示(第 n 个披萨对应第 n 个拉丁字母)。
Monocarp 还有 m 个朋友,他想要邀请其中恰好两人来吃披萨。对于每个朋友,Monocarp 知道该朋友喜欢哪些披萨。
当朋友到达 Monocarp 家后,每个披萨的处理方式如下:
- 如果该披萨不被任何被邀请的朋友喜欢,Monocarp 将吃掉它;
- 如果该披萨恰好被一位被邀请的朋友喜欢,该朋友将吃掉它;
- 如果该披萨被两位朋友都喜欢,他们将尝试分食。若披萨包含偶数片,两人各吃一半;若包含奇数片,他们会因争夺额外一片而发生争吵——Monocarp 不喜欢这种情况。
对于每个 k 从 0 到 ∑ai,计算选择两个朋友的方式数,使得朋友不会争吵且 Monocarp 恰好吃掉 k 片。
输入格式
第一行包含两个整数 n 和 m(1≤n≤20;2≤m≤5⋅105)——分别表示披萨数量和朋友数量。
第二行包含 m 个字符串 s1,s2,…,sm(1≤∣si∣≤n),其中 si 由互不重复的 A 到第 n 个拉丁字母组成,表示第 i 个朋友喜欢的披萨。每个 si 中的字符按字典序(字母顺序)排列。
第三行包含 n 个整数 a1,a2,…,an(1≤ai≤2⋅104)——各披萨的片数。
输出格式
输出 ∑ai+1 个整数,其中第 k 个整数(从 0 开始)表示满足条件(朋友不争吵且 Monocarp 吃 k 片)的选法数目。
输入输出样例
输入#1
3 6 A AB ABC AB BC C 2 3 5
输出#1
4 0 0 1 0 2 0 0 0 0 0
说明/提示
以第一个示例的所有朋友对为例:
- 邀请朋友 1 和 2:他们将吃掉披萨 1 和 2,Monocarp 吃披萨 3;
- 邀请朋友 1 和 3:他们将吃掉所有披萨;
- 邀请朋友 1 和 4:他们将吃披萨 1 和 2,Monocarp 吃披萨 3;
- 邀请朋友 1 和 5:他们将吃掉所有披萨;
- 邀请朋友 1 和 6:他们将吃披萨 1 和 3,Monocarp 吃披萨 2;
- 邀请朋友 2 和 3:因披萨 2 发生争吵;
- 邀请朋友 2 和 4:因披萨 2 发生争吵;
- 邀请朋友 2 和 5:因披萨 2 发生争吵;
- 邀请朋友 2 和 6:他们将吃掉所有披萨;
- 邀请朋友 3 和 4:因披萨 2 发生争吵;
- 邀请朋友 3 和 5:因披萨 2 发生争吵;
- 邀请朋友 3 和 6:因披萨 3 发生争吵;
- 邀请朋友 4 和 5:因披萨 2 发生争吵;
- 邀请朋友 4 和 6:他们将吃掉所有披萨;
- 邀请朋友 5 和 6:因披萨 3 发生争吵。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?