CF1062C.Banh-mi

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

JATC loves Banh-mi (a Vietnamese food). His affection for Banh-mi is so much that he always has it for breakfast. This morning, as usual, he buys a Banh-mi and decides to enjoy it in a special way.

First, he splits the Banh-mi into nn parts, places them on a row and numbers them from 11 through nn. For each part ii, he defines the deliciousness of the part as xi∈0,1x_i \in {0, 1}. JATC's going to eat those parts one by one. At each step, he chooses arbitrary remaining part and eats it. Suppose that part is the ii-th part then his enjoyment of the Banh-mi will increase by xix_i and the deliciousness of all the remaining parts will also increase by xix_i. The initial enjoyment of JATC is equal to 00.

For example, suppose the deliciousness of 33 parts are [0,1,0][0, 1, 0]. If JATC eats the second part then his enjoyment will become 11 and the deliciousness of remaining parts will become [1,_,1][1, \_, 1]. Next, if he eats the first part then his enjoyment will become 22 and the remaining parts will become [_,_,2][\_, \_, 2]. After eating the last part, JATC's enjoyment will become 44.

However, JATC doesn't want to eat all the parts but to save some for later. He gives you qq queries, each of them consisting of two integers lil_i and rir_i. For each query, you have to let him know what is the maximum enjoyment he can get if he eats all the parts with indices in the range [li,ri][l_i, r_i] in some order.

All the queries are independent of each other. Since the answer to the query could be very large, print it modulo 109+710^9+7.

JATC 非常喜爱越南美食“法棍三明治”(Banh-mi)。他对 Banh-mi 的热爱如此之深,以至于每天早餐必吃。今天早上,和往常一样,他买了一个 Banh-mi,并决定以一种特别的方式享用它。

首先,他将 Banh-mi 切成 nn 个部分,将它们排成一行,并从 11 到 nn 编号。对每个部分 ii,他定义其美味度为 xi∈{0,1}x_i \in \{0, 1\}。JATC 将逐一吃掉这些部分。在每一步中,他任选一个尚未被吃掉的部分并吃掉它。假设他吃掉的是第 ii 个部分,则他的愉悦值增加 xix_i,且所有剩余未吃部分的美味度也均增加 xix_i。JATC 的初始愉悦值为 00。

例如,假设三个部分的美味度为 [0,1,0][0, 1, 0]。若 JATC 先吃掉第二个部分,则他的愉悦值变为 11,剩余部分的美味度变为 [1,_,1][1, \_, 1](其中 _\_ 表示该部分已被吃掉)。接着,若他吃掉第一个部分,则愉悦值变为 22,剩余部分的美味度变为 [_,_,2][\_, \_, 2]。最后吃掉第三个部分后,JATC 的总愉悦值变为 44。

然而,JATC 并不想吃掉全部部分,而是想留下一些以后再吃。他向你提出 qq 个询问,每个询问包含两个整数 lil_i 和 rir_i。对每个询问,你需要告诉他:若他仅吃掉下标在区间 [li,ri][l_i, r_i] 内的所有部分(按某种顺序),所能获得的最大愉悦值是多少。

所有询问相互独立。由于询问答案可能非常大,请输出其对 109+710^9+7 取模的结果。

输入格式

The first line contains two integers nn and qq (1≤n,q≤100 0001 \le n, q \le 100\,000).

The second line contains a string of nn characters, each character is either '0' or '1'. The ii-th character defines the deliciousness of the ii-th part.

Each of the following qq lines contains two integers lil_i and rir_i (1≤li≤ri≤n1 \le l_i \le r_i \le n) — the segment of the corresponding query.

第一行包含两个整数 nn 和 qq(1≤n,q≤100 0001 \le n, q \le 100\,000)。

第二行包含一个长度为 nn 的字符串,每个字符为 '0' 或 '1'。其中第 ii 个字符表示第 ii 段的美味度。

接下来的 qq 行,每行包含两个整数 lil_i 和 rir_i(1≤li≤ri≤n1 \le l_i \le r_i \le n),表示对应查询的区间。

输出格式

Print qq lines, where ii-th of them contains a single integer — the answer to the ii-th query modulo 109+710^9 + 7.

输出 qq 行,其中第 ii 行包含一个整数——第 ii 个查询的答案对 109+710^9 + 7 取模的结果。

输入输出样例

  • 输入#1

    4 2
    1011
    1 4
    3 4

    输出#1

    14
    3
  • 输入#2

    3 2
    111
    1 2
    3 3

    输出#2

    3
    1

说明/提示

In the first example:

  • For query 11: One of the best ways for JATC to eats those parts is in this order: 11, 44, 33, 22.
  • For query 22: Both 33, 44 and 44, 33 ordering give the same answer.

In the second example, any order of eating parts leads to the same answer.

在第一个例子中:

  • 对于查询 11:JATC 吃掉这些部件的最佳方式之一是按以下顺序:11、44、33、22。
  • 对于查询 22:顺序 33、44 和 44、33 均给出相同的结果。

在第二个例子中,以任意顺序吃掉这些部件均会得到相同的结果。

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

首页