题目
题目链接
题解思维。
考虑每个字符对最终答案的贡献,每个字符的贡献为其左侧连续与之不相同的字符个数+1乘以其右侧与之不相同的字符个数+1。
样例:ababc
第一个字符a的贡献:
(0+1) * (1+1) = 2
a, ab
第二个字符b的贡献:
(1+1) * (1+1) = 4
ab, b, ba, aba
......
第五个字符c的贡献:
(4+1) * (0+1) = 5
ababc, babc, abc, bc, c
一开始以为滑动窗口,后来发现不行。就考虑每个字符的贡献。
代码#include
#include
#include
using namespace std;
const int N = 1e5+10;
int before[N], after[N], pre[30], ans;
string s;
int main()
{
cin >> s;
memset (pre, -1, sizeof pre);
for (int i = 0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?