CF2070F.Friends and Pizza

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Monocarp 有 nn 个披萨,第 ii 个披萨包含 aia_i 片。披萨用从 A 开始的拉丁字母大写字符表示(第 nn 个披萨对应第 nn 个拉丁字母)。

Monocarp 还有 mm 个朋友,他想要邀请其中恰好两人来吃披萨。对于每个朋友,Monocarp 知道该朋友喜欢哪些披萨。

当朋友到达 Monocarp 家后,每个披萨的处理方式如下:

  • 如果该披萨不被任何被邀请的朋友喜欢,Monocarp 将吃掉它;
  • 如果该披萨恰好被一位被邀请的朋友喜欢,该朋友将吃掉它;
  • 如果该披萨被两位朋友都喜欢,他们将尝试分食。若披萨包含偶数片,两人各吃一半;若包含奇数片,他们会因争夺额外一片而发生争吵——Monocarp 不喜欢这种情况。

对于每个 kk 从 00 到 ∑ai\sum a_i,计算选择两个朋友的方式数,使得朋友不会争吵且 Monocarp 恰好吃掉 kk 片。

输入格式

第一行包含两个整数 nn 和 mm(1≤n≤201 \le n \le 20;2≤m≤5⋅1052 \le m \le 5 \cdot 10^5)——分别表示披萨数量和朋友数量。

第二行包含 mm 个字符串 s1,s2,…,sms_1, s_2, \dots, s_m(1≤∣si∣≤n1 \le |s_i| \le n),其中 sis_i 由互不重复的 A 到第 nn 个拉丁字母组成,表示第 ii 个朋友喜欢的披萨。每个 sis_i 中的字符按字典序(字母顺序)排列。

第三行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤2⋅1041 \le a_i \le 2 \cdot 10^4)——各披萨的片数。

输出格式

输出 ∑ai+1\sum a_i + 1 个整数,其中第 kk 个整数(从 00 开始)表示满足条件(朋友不争吵且 Monocarp 吃 kk 片)的选法数目。

输入输出样例

  • 输入#1

    3 6
    A AB ABC AB BC C
    2 3 5

    输出#1

    4 0 0 1 0 2 0 0 0 0 0

说明/提示

以第一个示例的所有朋友对为例:

  • 邀请朋友 11 和 22:他们将吃掉披萨 11 和 22,Monocarp 吃披萨 33;
  • 邀请朋友 11 和 33:他们将吃掉所有披萨;
  • 邀请朋友 11 和 44:他们将吃披萨 11 和 22,Monocarp 吃披萨 33;
  • 邀请朋友 11 和 55:他们将吃掉所有披萨;
  • 邀请朋友 11 和 66:他们将吃披萨 11 和 33,Monocarp 吃披萨 22;
  • 邀请朋友 22 和 33:因披萨 22 发生争吵;
  • 邀请朋友 22 和 44:因披萨 22 发生争吵;
  • 邀请朋友 22 和 55:因披萨 22 发生争吵;
  • 邀请朋友 22 和 66:他们将吃掉所有披萨;
  • 邀请朋友 33 和 44:因披萨 22 发生争吵;
  • 邀请朋友 33 和 55:因披萨 22 发生争吵;
  • 邀请朋友 33 和 66:因披萨 33 发生争吵;
  • 邀请朋友 44 和 55:因披萨 22 发生争吵;
  • 邀请朋友 44 和 66:他们将吃掉所有披萨;
  • 邀请朋友 55 和 66:因披萨 33 发生争吵。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页