Submission #66326165


Source Code Expand

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define int long long
#define i128 __int128
#define ff first
#define ss second
#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vector<int>>

#define REP1(a) for (int _ = 0; _ < a; ++_)
#define REP2(i, a) for (int i = 0; i < a; ++i)
#define REP3(i, a, b) for (int i = a; i < b; ++i)
#define REP4(i, a, b, c) for (int i = a; i < b; i += c)
#define overload4(a, b, c, d, e, ...) e
#define REP(...) overload4(__VA_ARGS__, REP4, REP3, REP2, REP1)(__VA_ARGS__)

#define pb push_back
#define fast_io ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)

#define print(s) {cout << s; return;}

template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <class T> using min_heap = priority_queue<T, vector<T>, greater<T>>;
template <class T> using max_heap = priority_queue<T>;

const int MOD = 998244353;
const int INF = 1e18;

int pow(int b, int p) {
  if (p == 0) return 1;
  if (p == 1) return b;
  int k = pow(b, p / 2); k = k * k % MOD;
  if (p % 2 == 0) return k;
  else return k * b % MOD;
}

void solve() {
  int n;
  cin >> n;
  string s;
  cin >> s;
  int pre[n][2], suf[n][2];
  if (s[0] == '0') pre[0][0] = 0, pre[0][1] = 1;
  else pre[0][1] = 0, pre[0][0] = 1;
  REP(i, 1, n) {
    pre[i][0] = (s[i] != '0') + pre[i - 1][0];
    pre[i][1] = (s[i] != '1') + min(pre[i - 1][0], pre[i - 1][1]);
  }
  if (s[n - 1] == '0') suf[n - 1][0] = 0, suf[n - 1][1] = 1;
  else suf[n - 1][1] = 0, suf[n - 1][0] = 1;
  for (int i = n - 2; i >= 0; i--) {
    suf[i][0] = (s[i] != '0') + suf[i + 1][0];
    suf[i][1] = (s[i] != '1') + min(suf[i + 1][0], suf[i + 1][1]);
  }
  int ans = INF;
  REP(i, n) ans = min(ans, min(pre[i][0], pre[i][1]) + min(suf[i][0], suf[i][1]));
  cout << ans << "\n";
}

int32_t main(){
  fast_io;
  int tt = 1;
  cin >> tt;
  while (tt--) solve();
  return 0;
}

Submission Info

Submission Time
Task D - Flip to Gather
User sqrteipi
Language C++ 23 (gcc 12.2)
Score 400
Code Size 2085 Byte
Status AC
Exec Time 5 ms
Memory 9996 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 30
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3424 KiB
00_sample_01.txt AC 1 ms 3472 KiB
01_test_00.txt AC 4 ms 3512 KiB
01_test_01.txt AC 3 ms 3568 KiB
01_test_02.txt AC 3 ms 3428 KiB
01_test_03.txt AC 3 ms 3628 KiB
01_test_04.txt AC 3 ms 3632 KiB
01_test_05.txt AC 4 ms 3444 KiB
01_test_06.txt AC 4 ms 3436 KiB
01_test_07.txt AC 4 ms 3632 KiB
01_test_08.txt AC 4 ms 3512 KiB
01_test_09.txt AC 3 ms 3428 KiB
01_test_10.txt AC 3 ms 3500 KiB
01_test_11.txt AC 3 ms 3516 KiB
01_test_12.txt AC 3 ms 3432 KiB
01_test_13.txt AC 2 ms 3628 KiB
01_test_14.txt AC 2 ms 3580 KiB
01_test_15.txt AC 2 ms 3464 KiB
01_test_16.txt AC 2 ms 3752 KiB
01_test_17.txt AC 2 ms 3748 KiB
01_test_18.txt AC 2 ms 3760 KiB
01_test_19.txt AC 4 ms 7748 KiB
01_test_20.txt AC 4 ms 7820 KiB
01_test_21.txt AC 4 ms 7908 KiB
01_test_22.txt AC 5 ms 9800 KiB
01_test_23.txt AC 5 ms 9796 KiB
01_test_24.txt AC 5 ms 9996 KiB
01_test_25.txt AC 5 ms 9860 KiB
01_test_26.txt AC 5 ms 9872 KiB
01_test_27.txt AC 5 ms 9920 KiB