CF1975I.Mind Bloom
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这就是一切一直以来的样子。
这也将是未来永远的样子。
一切很快又会被遗忘……
Jellyfish 正在玩一款单人卡牌游戏“Slay the Spire”。共有 n 张卡牌,编号从 1 到 n。第 i 张卡牌的力量为 ci。
有一个长度为 n 的二进制字符串 s。如果 si=0,则第 i 张卡牌最初在抽牌堆中。如果 si=1,则第 i 张卡牌最初在 Jellyfish 的手牌中。
Jellyfish 会重复以下过程,直到她的手牌或抽牌堆为空为止:
- 设 x 为她手牌中力量最大的卡牌的力量。
- 将一张力量为 x 的卡牌放回抽牌堆。
- 从抽牌堆中随机抽取 x 张卡牌。抽取的所有 x 张卡牌的子集等概率被抽中。如果抽牌堆中的卡牌数少于 x,Jellyfish 会抽取所有卡牌。
在这个过程结束时,求 Jellyfish 能将抽牌堆清空的概率,结果对 1000000007 取模。
形式化地,设 M=1000000007。可以证明答案可以表示为最简分数 qp,其中 p 和 q 是整数且 q≡0(modM)。输出等于 p⋅q−1modM 的整数。换句话说,输出一个整数 x,满足 0≤x<M 且 x⋅q≡p(modM)。
输入格式
每个测试点包含多组测试数据。第一行包含测试用例数 t(1≤t≤100)。每组测试数据的描述如下。
每组测试数据的第一行包含一个整数 n(1≤n≤120),表示卡牌数量。
第二行包含 n 个整数 c1,c2,…,cn(0≤ci≤n),表示每张卡牌的力量。保证 c1≤c2≤…≤cn。
第三行包含一个长度为 n 的二进制字符串 s。如果 si=0,第 i 张卡牌最初在抽牌堆中;如果 si=1,第 i 张卡牌最初在 Jellyfish 的手牌中。
保证所有测试用例的 n2 之和不超过 1202。
输出格式
对于每组测试数据,输出 Jellyfish 能将抽牌堆清空的概率,对 1000000007 取模。
输入输出样例
输入#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 会不断打出力量为 1 的卡牌,直到她抽到一张力量为 0 或 2 的卡牌。如果她抽到力量为 0 的卡牌,最终她会将手牌打空。如果她抽到力量为 2 的卡牌,最终她会将抽牌堆清空。由于抽到 0 或 2 的概率相等,答案为 21,而 2⋅500000004≡1(mod109+7)。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?