CF1975I.Mind Bloom

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这就是一切一直以来的样子。

这也将是未来永远的样子。

一切很快又会被遗忘……

Jellyfish 正在玩一款单人卡牌游戏“Slay the Spire”。共有 nn 张卡牌,编号从 11 到 nn。第 ii 张卡牌的力量为 cic_i。

有一个长度为 nn 的二进制字符串 ss。如果 si=0s_i = \texttt{0},则第 ii 张卡牌最初在抽牌堆中。如果 si=1s_i = \texttt{1},则第 ii 张卡牌最初在 Jellyfish 的手牌中。

Jellyfish 会重复以下过程,直到她的手牌或抽牌堆为空为止:

  1. 设 xx 为她手牌中力量最大的卡牌的力量。
  2. 将一张力量为 xx 的卡牌放回抽牌堆。
  3. 从抽牌堆中随机抽取 xx 张卡牌。抽取的所有 xx 张卡牌的子集等概率被抽中。如果抽牌堆中的卡牌数少于 xx,Jellyfish 会抽取所有卡牌。

在这个过程结束时,求 Jellyfish 能将抽牌堆清空的概率,结果对 1 000 000 0071\,000\,000\,007 取模。

形式化地,设 M=1 000 000 007M=1\,000\,000\,007。可以证明答案可以表示为最简分数 pq\frac{p}{q},其中 pp 和 qq 是整数且 q≢0(modM)q \not\equiv 0 \pmod{M}。输出等于 p⋅q−1 mod Mp \cdot q^{-1} \bmod M 的整数。换句话说,输出一个整数 xx,满足 0≤x<M0 \le x < M 且 x⋅q≡p(modM)x \cdot q \equiv p \pmod{M}。

输入格式

每个测试点包含多组测试数据。第一行包含测试用例数 tt(1≤t≤1001\leq t\leq 100)。每组测试数据的描述如下。

每组测试数据的第一行包含一个整数 nn(1≤n≤1201 \leq n \leq 120),表示卡牌数量。

第二行包含 nn 个整数 c1,c2,…,cnc_1,c_2,\ldots,c_n(0≤ci≤n0 \leq c_i \leq n),表示每张卡牌的力量。保证 c1≤c2≤…≤cnc_1 \leq c_2 \leq \ldots \leq c_n。

第三行包含一个长度为 nn 的二进制字符串 ss。如果 si=0s_i = \texttt{0},第 ii 张卡牌最初在抽牌堆中;如果 si=1s_i = \texttt{1},第 ii 张卡牌最初在 Jellyfish 的手牌中。

保证所有测试用例的 n2n^2 之和不超过 1202120^2。

输出格式

对于每组测试数据,输出 Jellyfish 能将抽牌堆清空的概率,对 1 000 000 0071\,000\,000\,007 取模。

输入输出样例

  • 输入#1

    4
    5
    0 1 1 1 2
    00100
    3
    2 3 3
    000
    10
    0 0 0 0 0 0 0 1 1 1
    1111011111
    20
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 3 4
    00000000001000101010

    输出#1

    500000004
    0
    0
    675898154

说明/提示

在第一个测试用例中,Jellyfish 会不断打出力量为 11 的卡牌,直到她抽到一张力量为 00 或 22 的卡牌。如果她抽到力量为 00 的卡牌,最终她会将手牌打空。如果她抽到力量为 22 的卡牌,最终她会将抽牌堆清空。由于抽到 00 或 22 的概率相等,答案为 12\frac{1}{2},而 2⋅500 000 004≡1(mod109+7)2 \cdot 500\,000\,004 \equiv 1 \pmod {10^9+7}。

由 ChatGPT 4.1 翻译

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

首页