为什么我左闭右闭区间TLE左闭右开就AC?
#include <bits/stdc++.h>
using namespace std;
int n;
const int N = 2e6 + 10;
int a[N];
pair<int, int> f(int l, int r)
{
if (l == r) return {a[l], 1};
int m1 = (2 * l + r) / 3;
int m2 = (l + 2 * r) / 3;
int val1 = f(l, m1).first, cnt1 = f(l, m1).second;
int val2 = f(m1 + 1, m2).first, cnt2 = f(m1 + 1, m2).second;
int val3 = f(m2 + 1, r).first, cnt3 = f(m2 + 1, r).second;
if (val1 == val2 && val2 == val3) return {val1, cnt1 + cnt2 + cnt3 - max({cnt1, cnt2, cnt3})};
else if (val1 == val2) return {val1, min(cnt1, cnt2)};
else if (val1 == val3) return {val1, min(cnt1, cnt3)};
else if (val2 == val3) return {val2, min(cnt2, cnt3)};
return {val1, min({cnt1, cnt2, cnt3})};
}
int main()
{
// freopen("1.txt", "r", stdin);
// freopen("2.ans", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
string s;
cin >> n >> s;
for (int i = 0; s[i]; i ++ ) a[i + 1] = s[i] - '0';
cout << f(1, (int)pow(3, n)).second;
return 0;
}