首页 > 其他分享 >2021 ccpc 威海 D. Period(next数组)

2021 ccpc 威海 D. Period(next数组)

时间:2022-09-24 10:56:42浏览次数:98  
标签:int pos next 后缀 ccpc Period 长度 net 查询

https://vjudge.net/problem/Gym-103428D
题意:
给你一个字符串,q次查询,每次查询会将字符串中的一个字符修改为#,求在新串中可以选出几种长度不同的前后缀,使得前后缀相同

分析:
对于长度为n的串,#在pos位置时,只需对长度小于等于min(pos-1,n-pos)的前后缀查询即可
q在1e6 故要先预处理主串看看有哪些长度的前后缀是相同的 再O(1)查询

代码:

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
char s[N];
int n;
int ne[N],ans[N];
void getne(){
    ne[0]=-1;
    int i=0,j=-1;
    while(i<n){
        if(j==-1|| s[i]==s[j]){
            i++,j++;
            ne[i]=j;
        }
        else j=ne[j];
    }
}
void getans(){
    getne();
    int now=ne[n];
    while(now){
        ans[now]++;
        now=ne[now];
    }
//需要注意的是,只需要遍历到中间位置,后半部分和前面其对称位置的答案是一样的。
//而遍历到后半位置就会错误,按照题目要求,公共前后缀不可能超过一半。
    for(int i=1;i<=n/2;i++){
        ans[i]+=ans[i-1];
    }

}
signed main()
{
	scanf("%s",s);
    n=strlen(s);
    getans();
    int m;cin>>m;
    while(m--){
        int k;scanf("%d",&k);
        k=min(k-1,n-k);
        printf("%d\n",ans[k]);
    }
    return 0;
}

————————————————
版权声明:本文为CSDN博主「chmpy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_55032066/article/details/121685812

标签:int,pos,next,后缀,ccpc,Period,长度,net,查询
From: https://www.cnblogs.com/kingwz/p/16725121.html

相关文章

  • nextTick解释与应用
    官网解释:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。实例演示template<p><buttonv-on:click="change">changeTxt......
  • ABP-VNEXT 学习笔记(六)事件总线--本地事件总线2
    在上一篇中,我们学习介绍了Abp本地事件的基础应用,但都没有涉及到数据库层面的执行。在数据操作上,abp也提供了很好的事件处理机制,针对数据的增删改操作默认发布了事件,我们只......
  • 9-21next
    新建表格  用来进行本地信息交互   需要在uec++中继承FTableRowBase格式如下“”:  FInputChord是设置按键的结构体......
  • 如何保持 NextJS 项目的清晰和干净
    如何保持NextJS项目的清晰和干净已经使用NextJS实现了许多项目,我真的不得不说,我喜欢它。您构建Web应用程序的速度,尤其是与Tailwind结合使用的速度令人难以置信。......
  • nextTick原理学习
    一、为什么用nextTick(1)js执行原理Eventloop首先js是单线程的,所谓单线程,就是同一时间只能处理一件事情。JS中的任务分为同步任务和异步任务,其中异步任务分为宏任务和微任......
  • 20220911 CCPC 网络赛
    第一次正式参加xcpc比赛,三个人都好久没写代码了,导致一堆题写出来了没调出来,很下饭。ADoubtvsLie模拟题,直接模拟题意即可。CGuess手玩一下找下规律即可。HMutip......
  • ABP-VNEXT 学习笔记(六)事件总线--本地事件总线
    事件总线,是我们在处理分布式和微服务的时候经常需要用到的,用于分布式事务解决方案。事件总线基本就2个逻辑,1个发布事件,1个是订阅事件。abp也提供了事件总线的处理机制下......
  • CCPC2022 网络赛 Substring Match
    SubstringMatch给定长为\(n\)的文本串\(S\)和长为\(m\)的模式串\(T\),求\(T\)在\(S\)中能匹配的最长的子串的长度。\(T\)中有不超过200个大写字母。大写字母能匹配任意数......
  • CCPC2020网络预选赛(vp)
    比赛链接:https://vjudge.net/contest/513012C-ExpressMailTaking题意:有\(n\)个箱子,分别在\(a_1,a_2,...,a_n\)的位置,钥匙在\(k\)的位置,每去打开一个箱子......
  • D - path || 2019CCPC网络赛 || 贪心,优先队列,vector
    题意:求无起止点的k短路多组数据,效率约为nlogn解法:由于无起止点,就可以用类似kruskal的贪心思路,优先考虑最短的道路并计数。每使用一个当前最短道路,就入队一个次短道路......