CF1295B.Infinite Prefixes

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given string ss of length nn consisting of 0-s and 1-s. You build an infinite string tt as a concatenation of an infinite number of strings ss, or t=ssss…t = ssss \dots For example, if s=s = 10010, then t=t = 100101001010010...

Calculate the number of prefixes of tt with balance equal to xx. The balance of some string qq is equal to cnt0,q−cnt1,qcnt_{0, q} - cnt_{1, q}, where cnt0,qcnt_{0, q} is the number of occurrences of 0 in qq, and cnt1,qcnt_{1, q} is the number of occurrences of 1 in qq. The number of such prefixes can be infinite; if it is so, you must say that.

A prefix is a string consisting of several first letters of a given string, without any reorders. An empty prefix is also a valid prefix. For example, the string "abcd" has 5 prefixes: empty string, "a", "ab", "abc" and "abcd".

给你一个长度为 nn 的字符串 ss,它仅由字符 0 和 1 组成。你通过无限次拼接 ss 构造一个无限长字符串 tt,即 t=ssss…t = ssss \dots。例如,若 s=s = 10010,则 t=t = 100101001010010...。

请计算 tt 的所有前缀中,平衡值等于 xx 的前缀个数。字符串 qq 的平衡值定义为 cnt0,q−cnt1,qcnt_{0, q} - cnt_{1, q},其中 cnt0,qcnt_{0, q} 表示 qq 中 0 的出现次数,cnt1,qcnt_{1, q} 表示 qq 中 1 的出现次数。满足条件的前缀个数可能为无穷;若是如此,你必须明确指出这一点。

前缀指由给定字符串的最前面若干个字符(顺序不变)组成的字符串;空字符串也是一个合法的前缀。例如,字符串 "abcd" 共有 5 个前缀:空字符串、"a"、"ab"、"abc" 和 "abcd"。

输入格式

The first line contains the single integer TT (1≤T≤1001 \le T \le 100) — the number of test cases.

Next 2T2T lines contain descriptions of test cases — two lines per test case. The first line contains two integers nn and xx (1≤n≤1051 \le n \le 10^5, −109≤x≤109-10^9 \le x \le 10^9) — the length of string ss and the desired balance, respectively.

The second line contains the binary string ss (∣s∣=n|s| = n, si∈0,1s_i \in {\text{0}, \text{1}}).

It's guaranteed that the total sum of nn doesn't exceed 10510^5.

第一行包含一个整数 TT(1≤T≤1001 \le T \le 100)—— 测试用例的数量。

接下来的 2T2T 行包含测试用例的描述——每个测试用例占两行。第一行包含两个整数 nn 和 xx(1≤n≤1051 \le n \le 10^5,−109≤x≤109-10^9 \le x \le 10^9)—— 分别为字符串 ss 的长度和目标平衡值。

第二行包含一个二进制字符串 ss(∣s∣=n|s| = n,si∈{0,1}s_i \in \{\text{0}, \text{1}\})。

保证所有测试用例中 nn 的总和不超过 10510^5。

输出格式

Print TT integers — one per test case. For each test case print the number of prefixes or −1-1 if there is an infinite number of such prefixes.

输出 TT 个整数——每个测试用例输出一个整数。对于每个测试用例,输出满足条件的前缀个数;若满足条件的前缀有无穷多个,则输出 −1-1。

输入输出样例

  • 输入#1

    4
    6 10
    010010
    5 3
    10101
    1 0
    0
    2 0
    01

    输出#1

    3
    0
    1
    -1

说明/提示

In the first test case, there are 3 good prefixes of tt: with length 2828, 3030 and 3232.

在第一个测试用例中,tt 有 3 个好前缀,其长度分别为 2828、3030 和 3232。

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

首页