首页 > 其他分享 >cf(div4) 第四周

cf(div4) 第四周

时间:2024-03-31 16:12:25浏览次数:35  
标签:div4 const int cf long 四周 ans 长度 include

Problem - E - Codeforces

E. Nearly Shortest Repeating Substring

题解:我们直接枚举长度

题目限制很多

首先,枚举长度要确保整除

然后我们在取从头开始的这个长度的字符串一一向下比对

这里我们还要去这个长度的i+=len下一个字串在一一去比对

然后就不可能往下取了,如果向下取那就说明前面两个串都不对,那么匹配就会大于1,不符合题目条件,所以我们只需要枚举前两个同长度的字符串即可

#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
//#define double long double
#define int long long
#define endl '\n'
using namespace std;
const int N=1e6+10,M=1e1;
const int INF = 0x3f3f3f3f;
const int mod=1e9+7;
typedef pair<int,int> PII;
int kmp(int a,int k,int p)
{
    int ans=1;
    while (k)
    {
        if(k&1) ans=ans*a%p;
        k>>=1;
        a=a*a;
    }
    return ans;
}


void solve()
{
    int n;
    cin>>n;
    string s;
    cin>>s;
    for(int len=1;len<=n;len++)
    {
        if(n%len!=0) continue;

        for(int i=0;i<n && i<=len;i+=len)
        {
            int ans=0;
            for(int j=0;j<n;j++)
            {
                ans+=(s[i+j%len]!=s[j]);
            }
            if(ans<=1)
            {
                cout<<len<<endl;
                return;
            }
        }
    }

}
signed main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int T=1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

 

标签:div4,const,int,cf,long,四周,ans,长度,include
From: https://www.cnblogs.com/whatdo/p/18106844

相关文章

  • CCF-CSP真题《202309-3 梯度求解》题解
    题目string转longlong忘记处理负数卡了半天,服了#include<iostream>#include<cstdio>#include<cstring>#include<sstream>typedeflonglongll;usingnamespacestd;intn,m,temp;lla[302];stringf,x,b;llmod=1e9+7;structnode{ stringcon; n......
  • CF712E Memory and Casinos 题解
    假设只保留数组上\([l,r]\)的这段数,记\(f_i\)表示从点\(i\)出发到达\(n+1\)的概率,则有\(f_0=0,f_{n+1}=1,f_i=(1-p_i)f_{i-1}+p_if_{i+1}\),题目要求的是\(f_1\)。考虑对最后一个等式进行一些变换,把\(f_i\)的系数拆开得:\[p_if_i+(1-p_i)f_i=(1-p_i)f_{i-1}+p_if_{i+1......
  • codeforces div4 Double Strings
    #include<iostream>#include<algorithm>#include<cstring>#include<map>usingnamespacestd;intT,n;strings[900005];map<string,int>mm;//存放每一个字符串是否出现过intmain(){ cin>>T; while(T--){ mm.clear();//每次清空mm里面的数......
  • 题解 CF698C【LRU】
    题解CF698C【LRU】题目描述有\(n\)种物品和大小为\(k\)的队列。每次操作,以\(p_i\)的概率选择第\(i\)种物品放入队尾,如果已经有物品\(i\)了就将物品\(i\)拿出来扔到队尾。若队列大小\(\gtk\),弹出队首。求\(10^{100}\)次操作后每种物品在队列里的概率。\(1\leq......
  • 题解 CF70E【Information Reform】
    题解CF70E【InformationReform】题目描述\(n\)个点的树,边权为\(1\)。可以花费常数\(k\),在一个点上建基站。每个点\(i\)需要找到离他最近的基站\(a_i\),花费\(d[dis(i,a_i)]\)。一种方案的总花费是建基站的花费加上每个点的花费之和。最小化总花费。输出方案\(a_i\)。......
  • CF208E Blood Cousins
    CF208EBloodCousins线段树合并考虑把询问离线,转化题意,也就是求\(v\)的\(p\)级祖先有多少个\(p\)级儿子,那么询问的答案就是「\(p\)级祖先有多少个\(p\)级儿子数量-1」(减去自己)。\(p\)级祖先可以倍增找到。我们可以维护根节点的\(k\)级儿子。因为在遍历的过程中......
  • CF746 期望+逆序对
    Link题意:给定一个\(1\)到\(n\)的排列,等概率选一段区间\([l,r]\)随机排序,求期望逆序对数。\[E=\dfrac{\sum(cnt_{[1,n]}-cnt_{[l,r]}+E_{len})}{\dfrac{n\times(n+1)}{2}}\]\(cnt_{[l,r]}\)表示原序列\([l,r]\)内部逆序对数。\(E_{len}\)表示长度为......
  • 2024年03月CCF-GESP编程能力等级认证C++编程八级真题解析
    本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题为丰富食堂菜谱,炒菜部进行头脑风暴。肉类有鸡肉、牛肉、羊肉、猪肉4种,切法有肉排、肉块、肉末3种,配菜有圆白菜、油菜、豆腐3种,辣度有......
  • 2024年03月CCF-GESP编程能力等级认证C++编程七级真题解析
    本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题下列关于排序的说法,正确的是()。A.冒泡排序是最快的排序算法之一。B.快速排序通常是不稳定的。C.最差情况,N个元素做归并排序......
  • CF865D Buy Low Sell High
    传送门题意:已知未来\(n\)天的股价\(c_i\),每天可以买入一支或者卖出一支,求\(n\)天后利润总额最大是多少。算法:模拟费用流。【费用流模型】把每一天抽象为一个结点:\(d_1\simd_n\)。\(S\rightarrowd_1\simd_n\),容量\(1\)费用\(-c_i\)。\(d_1\simd_n\rightarrowT......