CodeForces-1680C Binary String
Binary String
二分 + 尺取 || 尺取
二分+尺取:时间复杂度为 \(O(nlogn)\)
答案是单调的,所以直接二分枚举答案,然后再 judge 判断的时候,尺取中间剩下的区间
#include
#include
#include
#include
#include
#include
#include
#include
尺取,时间复杂度为 \(O(n)\)
这里用到一个贪心,只有在剩余区间的代价和删除区间的代价尽可能相等的时候,是最优解
所以就可以根据这个,尺取每个区间 \([l, r]\),因为对于区间 \([l_{i+1}, r_{i+1}]\),必然有 \(r_i \leq r_{i+1}\)
#include
#include
#include
#include
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while(t--)
{
string s;
cin >> s;
int cnt0 = 0, cnt1 = 0, len = s.length();
for(int i=0; i