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;}
}