首页 > 文章列表 > 安排一个二进制字符串,以在索引范围内获得最大值。C/C++?

安排一个二进制字符串,以在索引范围内获得最大值。C/C++?

索引 字符串 二进制
298 2023-08-20

对于一个由0和1组成的给定字符串,我们给出了M个不相交的范围A,B(A <= B),具体为[A1, B1],[A2, B2],…,[AM, BM],任意两个区间不重叠—形式上,对于每个有效的i,j,其中i!= j,要么Ai < Bj,要么Bj < Ai。

活动是找到一个合法或有效的排列,同时满足以下两个条件−

  • 所有M个给定范围之间的数字之和最大。

  • 字符串将是字典序最大的。字符串1100的字典序比字符串1001高。

示例

Input
11100
3
3 4
5 5
Output
00111
First we put 1’s in position 3 and 4 then in 5 as there are no 1’s left, the string formed is 00111.
Input
0000111
2
1 1
1 2
Output
1110000

在上面的例子中,我们首先将1放在第1和第2个位置,然后还剩下另一个'1',

所以,我们使用它来使字符串按字典顺序最大化,并将其放在第3个位置,从而完成重新排列。