AI智能
改变未来

#646 (Div. 2) B题Subsequence Hate

题目传送门
题意: 给你一个二进制字符串s,对s中的某个字符取反算一次操作,求出最小次数使得s不含010或101的子序列。
思路:010与101都不能是s的子序列,所以s只有00000111111或1111111000000两种情况,所以我们只用遍历分割线(0,1分割点)的位置并维护最小次数即可

#include<bits/stdc++.h>using namespace std;int main() {int T, res;string s;cin >> T;while(T--) {int l1=0,l0=0,r1=0,r0=0;cin >> s;res = s.size();for(int i = 0; i < s.size(); ++ i) {if (s[i] == \'0\') r0 ++;else r1 ++;}for(int i = 0; i < s.size(); ++ i) {if (s[i] == \'0\') l0 ++, r0 --;else l1 ++, r1 --;res = min(res , min(l1,l0) + min(r1,r0));}cout << res << endl;}return 0;}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » #646 (Div. 2) B题Subsequence Hate