Codeforces 1238 D. AB-string
思维题 这次cf思维题好多啊
定义了good string 指一个串,其中每一个字符都属于一个长度>=2 的回文串的一部分。叫你求一个串中有几个good substring。
显然ab串 good string会更多。只要aba,bab,aa,bb等等很轻易可以满足
n个字符共有 n*(n-1)/2个不同位置的子串,我们反向考虑排除不是good string的部分。
首先想到ab,ba不是good string,再延申aaaaaaaaab,bbbbbbbbba,abbbbbbbb,baaaaaaaa,这一类,也都不是good string,且其中包含的同一的串的长度就是能从这部分中提取出来的非good string的数量。
所以就可以从前往后找前两种 非good string,再从后前找 后两种非 good string, 最后ab,ba这样的被减去了两次,再加上一次即可。
#include <bits/stdc++.h>
#define debug(x) cout << #x << ": " << x << endl
using namespace std;
typedef long long ll;
const int MAXN=2e5+;
const int INF=0x3f3f3f3f; int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n;
string s;
cin>>n>>s;
ll ans=1ll*n*(n-)/;
int cur=;
for(int i=;i<s.size();++i)
{
if(s[i]==s[i-])
cur++;
else
{
ans-=cur;
cur=;
}
}
cur=;
for(int i=n-;i>=;--i)
{
if(s[i]==s[i+])
cur++;
else
{
ans-=cur;
cur=;
}
}
for(int i=;i<s.size()-;++i)
if(s[i]!=s[i+]) ans++;
cout<<ans<<endl;
return ;
}
Codeforces 1238 D. AB-string的更多相关文章
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- 【动态规划】【最短路】Codeforces 710E Generate a String
题目链接: http://codeforces.com/problemset/problem/710/E 题目大意: 问写N个字符的最小花费,写一个字符或者删除一个字符花费A,将当前的字符数量翻倍花费 ...
- codeforces 632C The Smallest String Concatenation
The Smallest String Concatenation 题目链接:http://codeforces.com/problemset/problem/632/C ——每天在线,欢迎留言谈论. ...
- 【Codeforces 1120C】Compress String
Codeforces 1120 C 题意:给一个串\(S\),将这个串分成\(t_1..t_m\),如果\(t_i\)在\(t_1..t_{i-1}\)中作为子串出现过,那么这个的代价是\(b\),否 ...
- 【codeforces 797C】Minimal string
[题目链接]:http://codeforces.com/contest/797/problem/C [题意] 一开始,给你一个字符串s:两个空字符串t和u; 你有两种合法操作; 1.将s的开头字符加 ...
- Codeforces 1144 E. Median String
原题链接:https://codeforces.com/problemset/problem/1144/E tag:字符串模拟,大整数. 题意:给定两个字符串,求字典序中间串. 思路:可以把这个题当做 ...
- [SOJ #687]双生串(2019-11-6考试)/[hdu5431]AB String
题目大意 把所有仅包含\(AB\)的字符串按字典序排列,给你一个仅包含\(AB\)的字符串\(S\),然后有\(Q\)个问题,第\(i\)个问题给你\(k_i\),求不是\(S\)的子串中,第\(k_ ...
- codeforces 624C Graph and String
C. Graph and String time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CodeForces 710E Generate a String (DP)
题意:给定 n,x,y,表示你要建立一个长度为 n的字符串,如果你加一个字符要花费 x时间,如果你复制前面的字符要花费y时间,问你最小时间. 析:这个题,很明显的DP,dp[i]表示长度为 i 的字符 ...
随机推荐
- Cisco packet tracer 的手动添加模块
在PacketTracer 里面,路由器都是基本配置,这和真实设备是相同的 基本配置里面2620只有一个以太网口: 而2621和2811在背板上有两个以太网接口 所以,你在show run里面可以看到 ...
- 反射从入门到精通之深入了解Class类
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- webpack学习3.1由浅入深-打包JS
打包JS Step1:在新建的文件夹下新建一个sum.js文件,一个app.js文件 sum.js //es module export default function(a,b){ return a ...
- VScode安装golang插件详细教程
可能是由于非科班自学编程,所以在安装插件的时候虽然参考了很多人写的教程,但是总安装不成功,在综合各位大牛的教程之后进行总结,并且亲自实践安装成功,希望能给初学编程的人一些帮助,如果有不对的地方还希望大 ...
- CMAKE同时编译C++和CUDA文件
1. 首先是运行环境 Ubuntu 16.04 G++ 5.4.0 CUDA 8.0 2. 文件结构 cv@cv:~/myproject$ tree src src/ |-- CMakeLists.t ...
- python:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes问题解决
有如下一个文件,内容如下 { "test1": "/root/test/test1.template", "test2": "/r ...
- CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...
- Ubuntu1804中重新认识docker
这又是一篇充数的笔记……之前在Ubuntu中折腾过好几次了,但是关于他俩之间的故事总是参杂着第三者,不太纯粹,这一次只说她两之间的故事. 上一篇笔记弄好了Ubuntu环境.之后就是准备迎娶docker ...
- linux常用命令补充
linux补充 apt 是在我们Linux系统安装软件 pip 用来安装python3的模块(第三方库) ps # 查看运行进程(pid) ps aux # 查看全部任务进程 top # 也可以查看 ...
- PLSQL设置查询快捷键
Tools-->Preferences-->User Interface-->Editor-->AutoReplace 新建文本文件shortcut.txt(名称和路径可以自定 ...