牛客:小红的双排列删除得分

leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”
leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?
定义: abb 型字符串满足以下条件:

字符串长度为 3 。
字符串后两位相同。
字符串前两位不同。

输入描述:
第一行一个正整数
n
n
第二行一个长度为
n
n 的字符串(只包含小写字母)
1

n

1
0
5
1≤n≤10
5

输出描述:
"abb" 型的子序列个数。

include

include

include

using namespace std;
using ll=long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(nullptr);
ll n;
cin>>n;
vectorv(2*n+1);

for(ll i=1;i<=2n;i++)
{
cin>>v[i];
}
vectorprefix(2
n+1);
prefix[1]=v[1];
for(ll i=2;i<=2*n;i++)
{
prefix[i]=prefix[i-1]+v[i];

}
vectorpos(n+1,0);
vectordp(2n+1,0);
for(ll i=1;i<=2
n;i++)
{
if(pos[v[i]]==0)
{
pos[v[i]]=i;
dp[i]=dp[i-1];
}
else{
dp[i]=max(dp[pos[v[i]]-1]+prefix[i]-prefix[pos[v[i]]-1],dp[i-1]);
}
}
cout<<dp[2*n];
return 0;
}

posted @ 2026-04-27 21:56  lagranSun  阅读(8)  评论(0)    收藏  举报