题目链接:点击查看

题目大意:给出一个长度为n的01字符串,求所有满足条件的区间对数[l,r],使得在区间[l,r]内至少存在一组满足条件的答案,这里第二层的满足条件是指存在两个正整数个x和k,满足s[x]=s[x+k]=s[x+2*k],求满足条件的区间对数[l,r]

题目分析:看到这个题目可以想一下暴力,枚举左端点l,再枚举右端点,找到一个长度最短并且满足第二个条件的子串,这时右端点r右边的所有点都可以对答案做出贡献,记录下来就好了,但时间复杂度是n*k级别的,k最大可以到n,我们需要想办法优化

其实题目给的是01字符串,只有两种字母,我们可以寻找一下对于这个题目而言的性质,我们以1为例:

首先最短的满足条件的子字符串肯定是111,这时的k为1,若要将其断开也很容易,在其间插入一个相反的数即可,比如1011,若变成间隔类型的,比如10101,虽然在k为1时不满足条件了,但在k为2的时候可以满足条件了, 若想让k为2的时候不满足条件,我们需要将相反的数加倍一下就好了,变为1001001,这个时候就只能在k为3的时候满足条件了,其实我们将1加倍一下变为11001100,这个是题目给出的样例,也是最坏的一种情况了,在长度为8的情况下还可以达到无解,但长度为9时就一定有解了,因为我们不管怎么排列组合,总是能组合出上面的集中情况之一,所以这就是01字符串在这个题目中的性质了,具体证明我也不太会,只知道时间复杂度肯定比较小,也就是k比较小,所以直接暴力试试就行了,实际上这个题目中的k为9,总时间复杂度也就变成了9*n,刚好可以暴力过

顺带说一下,用goto语句跳出两层循环真的好用。。

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);string s;cin>>s;LL ans=0;for(int i=0;i<s.size();i++){for(int j=i+2;j<s.size();j++){for(int k=1;j-(2*k)>=i;k++){if(s[j]==s[j-k]&&s[j]==s[j-2*k]){ans+=s.size()-j;goto end;}}}end:;}cout<<ans<<endl;return 0;
}

CodeForces - 1168B Good Triple(思维+暴力)相关推荐

  1. L. Ray in the tube(思维暴力)

    L. Ray in the tube(思维&暴力) 思路:思维+暴力. 记:A,BA,BA,B的横坐标距离为xxx. 1.当xxx为奇数时,显然x=1x=1x=1包含所有奇数的情况. 2.当x ...

  2. Codeforces 846 A Curriculum Vitae 思维 暴力

    题目链接: http://codeforces.com/contest/846/problem/A 题目描述: 给你一个串, 你可以做删除操作, 要求结果串0不能在1的右边, 问最多可以剩几个数字 解 ...

  3. codeforces 768 C. Jon Snow and his Favourite Number(思维+暴力)

    题目链接:http://codeforces.com/contest/768/problem/C 题意:给出n个数,k个操作,和一个x,每次操作先排序然后对奇数位数进行xor x操作,最后问k次操作后 ...

  4. Three Integers CodeForces - 1311D(思维+暴力)

    You are given three integers a≤b≤c. In one move, you can add +1 or −1 to any of these integers (i.e. ...

  5. Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments 思维 + 暴力

    传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 首先关注到rrr从[2,n][2,n][2,n]都出现一次,所以很明显最后一个位置只出现一次,但是这样倒着来不是很 ...

  6. Codeforces 777D Cloud of Hashtags(思维 + 暴力)

    题意 <=5e5个字符串,要你不改变他们的次序,删除最少个字符,使得它们符合题目中定义的从上往下的字典序. 输出删除后的字符串 思路 从下往上看,比较相邻的字符串 i - 1 与字符串 i ,如 ...

  7. CodeForces - 1323B Count Subrectangles(思维)

    题目链接:点击查看 题目大意:给出一个数组 a 和数组 b 只由 0 和 1 构成,构造出矩阵 maze[ x ][ y ] = a[ x ] * b[ y ],显然maze矩阵同样只由 0 和 1 ...

  8. [ An Ac a Day ^_^ ] CodeForces 691F Couple Cover 花式暴力

    Couple Cover Time Limit: 3000MS   Memory Limit: 524288KB   64bit IO Format: %I64d & %I64u Descri ...

  9. Codeforces gym 100685 A. Ariel 暴力

    A. Ariel Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/A Des ...

最新文章

  1. 王敏捷 - 深度学习框架这十年!
  2. 二叉树的前中后序递归和非递归遍历操作【代码】
  3. 如何在 Asp.Net Core 中对请求进行限流
  4. html5游戏制作入门系列教程(八)
  5. linux安装操作系统以及配置ip地址
  6. 遥感影像辐射校正,地形校正等
  7. 简述er图的作用_ER图的理解
  8. [转贴][教学] 教你如何打飞机 ^_^
  9. VMware下centos/Linux鼠标移动闪烁解决办法(两种办法100%解决)
  10. “AI颜狗”来啦!第一眼看到照片,就能预测人们对你的第一印象
  11. 如何实现ASP.NET中网站访问量的统计
  12. 关于yml文件图标为粉红色转成绿色的问题
  13. python 删除文件夹下面的所有文件python删除文件夹下面的所有文件夹及子文件
  14. 广袤的县镇乡村也是鸿蒙OS的市场
  15. 【项目实战】Python实现多元线性回归模型(statsmodels OLS算法)项目实战
  16. 零代码平台基于模型驱动开发流程和概念
  17. Ubuntu docker 安装 QQ/微信wechat
  18. idea2018 2020_UAL坎伯韦尔艺术学院2020届研究生毕业作品展精选
  19. CH376 SD卡走线 TF卡走线
  20. 路由器交换机:单臂路由静态路由

热门文章

  1. MySQL高级 - 常用工具 - mysqlshow
  2. 初识MQ--mq常见技术介绍
  3. 已经被处理的消息不能丢
  4. Atomic Integer 原理分析-getAndAddInt
  5. Quartz源码总结
  6. Redis Hash 哈希 结构
  7. Collections集合工具类的方法_addAllshuffle
  8. 自定义idea archetype
  9. redis(9)--数据库
  10. 解决Hibernate报错The server time zone value is unrecognized or represents more than one time zone