首页 > 其他分享 >B. Kolya and Tandem Repeat -- codeforces

B. Kolya and Tandem Repeat -- codeforces

时间:2023-01-08 23:36:51浏览次数:59  
标签:sz Repeat -- codeforces tandem 判定 长度 Tandem repeat

B. Kolya and Tandem Repeat

https://codeforces.com/problemset/problem/443/B

 

思路

如果补充字符长度k大于等于s长度,则新的字符串,一份两半,

前半分包括s,可能包括部分补充的字符,

后半部分,则是完全的补充字符,可以完全匹配前半分字符,这时候的tandem repeat长度则是总长度的一半。

 

对于补充字符长度k小于s长度情况,

首先要准备一个tandem repeat判定函数,

然后,从“最大可能tandem repeat长度”开始判定, 这个长度就是k+s.size的一半,

如果满足判定函数,则打印tandem repeat长度

如果不满足判定函数,则“最大可能tandem repeat长度”减1, 再次进行判定,依此判定,直到减少到1为止。

 

Code

reference to

https://codeforces.com/submissions/chuanyu.fan

#include <bits/stdc++.h>
#include <iostream>
#include <string>
using namespace std;
string s;
int n,sz;
bool istare(int m){
    for(int i=0;i+2*m<=sz+n;i++){
        bool ok=1;
        for(int j=0;j<m;j++){
            if(i+j+m>=sz){
                break;
            }
            if(s[i+j]!=s[i+j+m]){
                ok=0;
//                if(m==3){
//                    cout<<i+j<<"!="<<i+j+m<<endl;
//                }
                break;
            }
            /*
            else if(m==3){
                cout<<j<<endl; 
            }
            */
        }
        if(ok){
            return 1;
        }
    }
    return 0;
}
int main(){
    cin>>s>>n;
    sz=s.size();
    if(n>=sz){
        cout<<(n+sz)/2*2<<endl;
        return 0;
    }
    for(int i=(n+sz)/2;i>=1;i--){
        if(istare(i)){
            cout<<i*2<<endl;
            return 0;
        }
    }
} 

 

标签:sz,Repeat,--,codeforces,tandem,判定,长度,Tandem,repeat
From: https://www.cnblogs.com/lightsong/p/17035735.html

相关文章

  • PHP-Session利用总结
    PHP-Session简介基本概念session一般称作会话控制,session对象存储特定用户会话所需的属性及配置信息。我自己的理解来说:PHPsession是一个特殊的变量,它存储着我们与服......
  • DNUICTF
    Web[签到]flag等一会后把内容复制下来,然后执行一下脚本:importreimportbase64flag=''f=open('flag.txt','r')content=f.read()foriinrange(20):......
  • SCTF2021
    Loginme有源码,没学过go,瞎看middleware.gopackagemiddlewareimport( "github.com/gin-gonic/gin")funcLocalRequired()gin.HandlerFunc{ returnfunc(c*gin.......
  • ServletContext
      publicclassHelloServletextendsHttpServlet{@OverrideprotectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServle......
  • JavaWeb三大组件之过滤器-Filter
    1.Filter过滤器Filter过滤器是javaEE的规范,是接口(javax.servletInterfaceFilter) 2.过滤器作用-拦截请求,过滤响应情景引入:浏览器访问tomcat的login页面,进行登录验证......
  • Jmeter的正则提取
    有了JSON提取器为啥还要用正则提取器?JSON提取器只针对接口返回的响应内容如果想提取的是响应头、请求头的值,而非响应内容的值呢?这个时候正则提取器的作用就出来了,它......
  • 4week-3字符串
    一.十六进制,十进制,在ASCII中的表示对应关系1.0十进制十六进制字符00NULL0x01//数值表达方式'\x00'//十六进制字符表达"\x00"//十......
  • vim rails 操作翻译
    rails.vimThisisamassive(inagoodway)VimpluginforeditingRubyonRailsapplications.EasynavigationoftheRailsdirectorystructure.gfconsider......
  • 四个常用的域对象
    四个常用的域对象:看了下web课上的PPT,我承认之前太大声了╥﹏╥四大域对象常用的四大域,即pageContext,request,session,application功能:都是存取数据,但对数据的存取范围不同......
  • [2019强网杯]随便注
    [2019强网杯]随便注考点:1、堆叠注入 2、sql预处理语句之前做过的一道题,再次遇到发现还是有很多需要学习的地方,也没有记录过堆叠注入的题,所以就想着记一下这道题的一些知......