C. Unstable String题目
每个?只能选择变一次,然后不能变了,这是关键。
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> a((int)6e5);
vector<int> b((int)6e5), c((int)6e5);
const int mod = 1e9 + 7;
int mp1[30],mp2[30];
string str;
signed main()
{
int t;
cin>>t;
while (t--)
{
cin>>str;
int n = str.length();
str = "?"+str;
vector<int>dp(3);
dp[1] = dp[2] = 0;
int res = 0;
for (int i=1;i<=n;i++)
{
vector<int>ndp(3);
ndp[1] = 0;
ndp[2] = 0;
if (str[i]=='0'||str[i]=='?') ndp[1] = dp[2]+1;
if (str[i]=='1'||str[i]=='?') ndp[2] = dp[1]+1;
res+=max(ndp[1],ndp[2]);
swap(dp,ndp);
}
cout<<res<<endl;
}
}