zoukankan      html  css  js  c++  java
  • CF1168B Good Triple 性质分析

    题意翻译

    给出01串s,求数对[l,r]个数,使得能找到至少一对[x,k],使1<=x,k<=|s|且l<=x<x+2k<=r且s[x]=s[x+k]=s[x+2k]

    题解: 

    这是一个 01 串........这个性质不是白给的QAQ......

    考虑暴力,复杂度貌似是 $n^2$ 级别的. 

    然而,我们发现每一个区间长度不会超过 9, 直接暴力解决即可. 

    Code:

    #include<bits/stdc++.h>
    #define maxn 1000000 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;
    int n; 
    char str[maxn]; 
    int main(){
       //  setIO("input"); 
        int r; 
        scanf("%s",str+1),n=strlen(str+1),r=n+2; 
        long long ans=0; 
        for(int i=n-1;i>=1;--i){
            for(int j=1;i+2*j<=n;++j) {
                if(str[i]==str[i+j]&&str[i+j]==str[i+2*j]) 
                {
                    r=min(r,i+2*j); 
                    break; 
                } 
            }
            ans += (long long)max(n-r+1,0); 
        }
        cout<<ans<<endl; 
        return 0; 
    }
    

      

  • 相关阅读:
    pe文件结构
    dll
    术语
    创建内存映射文件
    函数的调用约定
    串口
    linux 之 tcpdump
    linux 之程序管理
    perl 之eval
    2020-10-27_组合快捷键
  • 原文地址:https://www.cnblogs.com/guangheli/p/10953361.html
Copyright © 2011-2022 走看看