CF1860D Balanced String
题目描述
给定一个二进制字符串 $s$(二进制字符串是仅由字符 $0$ 和/或 $1$ 组成的字符串)。
我们称一个二进制字符串是“平衡的”,如果其中子序列 $01$ 的数量(即满足 $1 \le i < j \le n$,$s_i=0$ 且 $s_j=1$ 的下标对 $(i, j)$ 的数量)等于子序列 $10$ 的数量(即满足 $1 \le k < l \le n$,$s_k=1$ 且 $s_l=0$ 的下标对 $(k, l)$ 的数量)。
例如,字符串 $1000110$ 是平衡的,因为 $01$ 和 $10$ 子序列的数量都是 $6$。而 $11010$ 不是平衡的,因为 $01$ 子序列的数量是 $1$,而 $10$ 子序列的数量是 $5$。
你可以进行如下操作任意次:选择字符串中的任意两个字符并交换它们。你的任务是计算使字符串 $s$ 变为平衡所需的最小交换次数。
输入格式
输入仅一行,包含字符串 $s$($3 \le |s| \le 100$),仅由字符 $0$ 和/或 $1$ 组成。
输入还保证:字符串 $s$ 一定可以通过若干次交换变为平衡的。
输出格式
输出一个整数,表示使字符串 $s$ 变为平衡所需的最小交换次数。
说明/提示
在第一个样例中,字符串已经是平衡的,$01$ 和 $10$ 子序列的数量都是 $1$。
在第二个样例中,字符串已经是平衡的,$01$ 和 $10$ 子序列的数量都是 $6$。
在第三个样例中,一种可行的操作如下:$11010 \rightarrow 01110$。此时 $01$ 和 $10$ 子序列的数量都是 $3$。
在第四个样例中,一种可行的操作如下:$11001100 \rightarrow 11001010 \rightarrow 11000011$。此时 $01$ 和 $10$ 子序列的数量都是 $8$。
由 ChatGPT 4.1 翻译