洛谷试炼日记(trie树,AC自动机,回文自动机)(解题报告)

RISC-V架构革命:从服务器到汽车电子的开放生态与定制化实践 指令集架构(ISA)是计算机硬件与软件交互的核心规范,定义了处理器能够理解和执行的基本操作集合。其设计哲学主要分为复杂指令集(CISC)与精简指令集(RISC),后者以其指令规整、易于流水线化等优势,成为现代高性能与嵌入式处理器的设计基础。RISC-V作为基于RISC原则的开放标准指令集架构,其核心价值在于通过开源模式打破了传统架构的授权壁垒,赋予了芯片设计者前所未有的定制自由。这种开放性使得开发者能够针对特定应用场景,如追求极致能效的数据中心服务器或对功能安全有严苛要求的汽车电子,从微架构层面进行深度优化 阅读详情

Trie树

P4683 [IOI2008] Type Printer 打印机

题目链接
就是求最小操作数嘛 一开始想太多,其实就是最长的最后打印呗
那就先标记一下最长的那一串 然后dfs先跳过那些最长串经过的节点
最后再枚举最长串的节点就行啦
细节看代码(也没啥细节啦
AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 5e6 + 10;
int ch[N][26],cnt,fl[N],mx[N];
string s,a,ss;char t[N];
int n,tot;

template <class T>
inline void read(T& x){
    x = 0;int f = 1;
    char c = getchar();
    while(!isdigit(c)){
        if(c == '-') f = -1;
        c = getchar();
    }
    while(isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48),c = getchar();
    x *= f;
}

void insert(string s){
    int u = 0;
    for(int i = 0;s[i];i ++){
        int v = s[i] - 'a';
        if(!ch[u][v]) ch[u][v] = ++ cnt;
        u = ch[u][v];
        t[u] = v + 'a';
    }
    fl[u] = 1;
}

void dfs(string a){
    int u = 0;
    for(int i = 0;a[i];i ++){
        u = ch[u][a[i] - 'a'];
        mx[u] = 1;
    }
}

void solve(int u){
    if(fl[u]){
        tot ++;
        ss += 'P';
    }
    if(tot == n){
        cout << ss.size() << endl;
        for(int i = 0;ss[i];i ++){
            cout << ss[i] << endl;
        }
        return;
    }

    for(int i = 0;i < 26;i ++){
        if(ch[u][i] && !mx[ch[u][i]]){
            ss += t[ch[u][i]];
            solve(ch[u][i]);
            ss += '-';
        }
    }
    for(int i = 0;i < 26;i ++){
        if(ch[u][i] && mx[ch[u][i]]){
            ss += t[ch[u][i]];
            solve(ch[u][i]);
            ss += '-';
        }
    }
}
int main(){
    read(n);
    int mxl = 0;
    for(int i = 0;i < n;i ++){
        cin >> s;
        insert(s);
        if(mxl < s.size()){
            mxl = s.size();
            a = s;
        }
    }
    dfs(a);
    solve(0);
    return 0;
}

AC自动机

P2444 [POI2000]病毒

题目链接
fail跳来跳去挺好玩的,不这道题咱不跳fail
我们标记一下病毒串,然后在trie图上判断是否存在一个环,且环上没有病毒标记
dfs判环就行啦
AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>

using namespace std;
const int N = 3e5 + 10;
int ch[N][2],cnt,fail[N],fl[N];
bool vis[N],in[N],flag;
char s[N];
void insert(char s[]){
    int u = 0;
    for(int i = 0;s[i];i ++){
        bool v = s[i] - '0';
        if(!ch[u][v]) ch[u][v] = ++ cnt;
        u = ch[u][v];
    }
    fl[u] = 1;
}

void getfail(){
    queue<int> q;
    for(int i = 0;i < 2;i ++) if(ch[0][i]) q.push(ch[0][i]);
    while(!q.empty()){
        int u = q.front();q.pop();
        for(int i = 0;i < 2;i ++){
            if(ch[u][i]){
                fail[ch[u][i]] = ch[fail[u]][i];
                fl[ch[u][i]] |= fl[fail[ch[u][i]]];
                q.push(ch[u][i]);
            }
            else ch[u][i] = ch[fail[u]][i];
        }
    }
}

void dfs(int u){
    if(in[u]){
        flag = 1;
        return;
    }
    if(vis[u] || fl[u]) return;
    in[u] = vis[u] = 1;
    dfs(ch[u][0]);
    dfs(ch[u][1]);
    in[u] = 0;
}
int n;
int main(){
    scanf("%d",&n);
    for(int i = 0;i < n;i ++){
        scanf("%s",s);
        insert(s);
    }
    getfail();
    flag = 0;
    dfs(0);
    if(flag) puts("TAK");
    else puts("NIE");
    return 0;
}

回文自动机

P5496 【模板】回文自动机(PAM)

题目链接
就是一模板题嘞 封装写起来好舒服
AC代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 2e6 + 10;

struct PAM_t{
    int ch[26],fail,len,num;
};

struct PAM{
    PAM_t b[N];
    char s[N];
    int cur,n,cnt;
    PAM(){
        b[0].len = 0,b[1].len = -1;
        b[0].fail = 1,b[1].fail = 0;
        cnt = 1;
        cur = 0;
    }
    void read(){
        scanf("%s",s);
    }
    int getfail(int x){
        while(s[n - b[x].len - 1] != s[n] || n - b[x].len - 1 < 0) x = b[x].fail;
        return x;
    }

    void insert(){
        int pre = getfail(cur);
        if(!b[pre].ch[s[n]]){
            b[++ cnt].len = b[pre].len + 2;
            int tmp = getfail(b[pre].fail);
            b[cnt].fail = b[tmp].ch[s[n]];
            b[cnt].num = b[b[cnt].fail].num + 1;
            b[pre].ch[s[n]] = cnt;
        }
        cur = b[pre].ch[s[n]];
    }

    void solve(){
        int k = 0;
        for(n = 0;s[n];n ++){
            s[n] = (s[n] - 97 + k) % 26 + 97;
            s[n] -= 'a';
            insert();
            printf("%d ",b[cur].num);
            k = b[cur].num;
        }
    }
}P;
int main(){
    P.read();
    P.solve();
    return 0;
}

P3649 [APIO2014]回文串

题目链接
也是模板啦 就是要处理一下出现次数而已
和AC自动机的处理方式很像的
记得在外面把短的回文串出现次数加上长串出现次数就行啦(前提是短串是长串的子串,fail指向的不就是最长回文后缀吗,后缀不就是子串了吗)
AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>

using namespace std;
const int N = 2e6 + 10;
struct PAM_T{
    int ch[26],fail,len,num;
};

struct PAM{
    PAM_T b[N];
    char s[N];
    int cnt,n,cur;
    PAM(){
        b[0].len = 0,b[1].len = -1;
        b[0].fail = 1,b[1].fail = 0;
        cnt = 1;
        cur = 0;
    }
    void read(){
        scanf("%s",s);
    }
    int getfail(int x){
        while(s[n - b[x].len - 1] != s[n]) x = b[x].fail;
        return x;
    }
    void insert(){
        int pre = getfail(cur);
        if(!b[pre].ch[s[n]]){
            b[++ cnt].len = b[pre].len + 2;
            int tmp = getfail(b[pre].fail);
            b[cnt].fail = b[tmp].ch[s[n]];
            b[pre].ch[s[n]] = cnt;
        }
        cur = b[pre].ch[s[n]];
        b[cur].num ++;
    }
    void solve(){
        for(n = 0;s[n];n ++){
            s[n] -= 'a';
            insert();
        }
        long long ans = 0;
        for(int i = cnt;i;i --){
            b[b[i].fail].num += b[i].num;
            if(b[i].num * 1ll * b[i].len > ans) ans = b[i].num * 1ll * b[i].len;
        }
        printf("%lld\n",ans);
    }
}P;
int main(){
    P.read();
    P.solve();
    return 0;
}

P4287 [SHOI2011]双倍回文

题目链接
需要多维护一个trans数组,用来表示长度小于或等于当前节点长度一半的最长回文后缀 更新方法和fail数组大同小异
新建一个节点后,如果这个节点的长度<=2,那么这个节点的trans直接指向这个节点的fail(因为fail的长度肯定<=1)
否则,就跳fail,判断是否能够扩展以及长度是否满足(和fail更新差不多)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 5e5 + 10;
int ch[N][26],fail[N],len[N],trans[N];
int n,cnt,ans,cur;
char s[N];
int getfail(int x,int i){
    while(s[i - len[x] - 1] != s[i]) x = fail[x];
    return x;
}

void build(){
    for(int i = 0;s[i];i ++){
        int x = s[i] - 'a';
        int p = getfail(cur,i);
        if(!ch[p][x]){
            len[++ cnt] = len[p] + 2;
            fail[cnt] = ch[getfail(fail[p],i)][x];
            ch[p][x] = cnt;
            if(len[cnt] <= 2) trans[cnt] = fail[cnt];
            else{
                int tmp = trans[p];
                while(s[i - 1 - len[tmp]] != s[i] || (len[tmp] + 2) * 2 > len[cnt]) tmp = fail[tmp];
                trans[cnt] = ch[tmp][x];
            }
        }
        cur = ch[p][x];
    }
}
int main(){
    scanf("%d",&n);
    scanf("%s",s);
    fail[0] = 1,fail[1] = 0;
    len[0] = 0,len[1] = -1;
    cur = 0,cnt = 1;
    build();
    for(int i = 2;i <= cnt;i ++){
        if((len[trans[i]] * 2) == len[i] && len[i] % 4 == 0)
            ans = max(ans,len[i]);
    }
    printf("%d\n",ans);
    return 0;
}

以后有机会会写篇回文自动机的博客的(毕竟它比较难)
主要是后缀数组还没学透啊啊啊啊啊好难

产业园区运营负责人如何实现创新资源的系统化配置?.docx 产业园区运营负责人如何实现创新资源的系统化配置? 立即下载

相关推荐

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?.docx

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?

Trie树(字典树)//洛谷P1481+洛谷P2580

第一行——咕咕咕。 第二行——慢慢学呗,还能离咋地。 Trie树:又称字典树,前缀树。是一种通过增加空间复杂度来减少时间复杂度的结构。其特点是根节点为空,其余节点存一个字符,节点与节点之间的路径是一个字符(一般是用于字符串)。 建树:令根节点为空,从该点出发,将新的字符串上的字符一个个加入,未出现过即直接相连,出现过找到最末尾的共享字符,连接即可。 性质:1.从根节点到某节点的路径即...

MoonLight_月亮 1035

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

【状态估计】【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)内容概要:本文主要介绍了基于变频控制的多相交错LLC谐振变换器闭环仿真研究,重点探讨了多相交错并联技术在降低输出电流纹波和提升功率容量方面的优势,分析了交错角对纹波抵消的影响以及均流问题的成因。针对变频控制带来的非线性特性,文章采用扩展描述函数(EDF)建立小信号模型,用于指导PID控制器的设计,并验证其在稳态和动态工况下的控制性能。通过Simulink仿真平台对闭环系统进行建模与测试,考察了启动过程、负载阶跃响应及频率调节的平滑性,结果表明所设计的控制系统具有良好的稳态精度和动态响应能力。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生及从事电源系统研发的工程技术人员。; 使用场景及目标:①掌握多相交错LLC谐振变换器的工作原理与建模方法;②学习变频控制下非线性系统的建模与PID环路设计技巧;③应用于高效率、低纹波开关电源的仿真设计与优化。; 阅读建议:建议结合文中提供的仿真模型与参数设置进行实践操作,重点关注EDF建模过程与控制器参数整定方法,通过对比不同交错角下的仿真结果加深对纹波抑制机理的理解。

洛谷试炼日记(trie树和AC自动机)(解题报告)

文章目录**Trie树**P4407 [JSOI2009]电子字典P4551 最长异或路径**AC自动机**P5357 【模板】AC自动机(二次加强版)P3121 [USACO15FEB]Censoring G Trie树 P4407 [JSOI2009]电子字典 题目链接 第一次近距离接触树上dfs,之前可能接触过但是没仔细了解,就是用dfs枚举,因为题目说目标串可以改动之后变为字典树里的串 所以对目标串进行dfs就行啦 细节看代码就好 AC代码: #include<iostream> #in

juruo_c的博客 386

论文复现基于物理信息神经网络预测2D3D非稳态温度场及热源(Python代码实现)

内容概要:本文详细介绍了基于物理信息神经网络(PINN)预测2D和3D非稳态温度场及热源的Python代码实现,旨在复现相关科研论文。该方法将物理定律嵌入神经网络结构中,利用偏微分方程描述传热过程,在无需大量标注数据的前提下,求解复杂的非稳态传热问题,实现对温度场时空演化和内部热源分布的高精度预测。文中系统阐述了PINN的模型构建原理、损失函数设计策略(包含初始条件、边界条件与控制方程的物理约束)、网络训练流程以及数值实验结果,充分展示了其在科学计算与工程仿真中的强大潜力与良好泛化能力。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉偏微分方程与传热学基本概念,对科学计算、物理信息建模、智能仿真等方向感兴趣的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现并深入理解PINN在非稳态热传导问题中的具体应用;②为从事热管理、材料科学、能源系统、航空航天等领域的研究人员提供可扩展、可定制的开源代码框架;③辅助高校教学与科研实践,帮助学生掌握物理信息驱动的机器学习建模方法及其在实际工程问题中的实现路径。; 阅读建议:建议读者结合文中提供的完整代码与详细注释,使用主流深度学习框架(如TensorFlow或PyTorch)进行动手实践,重点理解物理约束如何通过损失项融入网络训练过程,并尝试在不同几何构型、边界条件或热源形式下进行模型验证,以深入掌握PINN的设计思想与泛化机制。

无源项一维波动问题的PINN的Python torch实现

内容概要:本文详细介绍了无源项一维波动问题的物理信息神经网络(PINN)的Python实现方法,基于PyTorch框架构建神经网络模型,将波动方程作为物理约束嵌入损失函数中,实现对偏微分方程的无网格数值求解。文中系统阐述了PINN的核心原理、网络结构设计、初始与边界条件的处理策略,以及利用自动微分技术高效计算高阶偏导数的方法。该方法摆脱了传统数值方法对网格划分的依赖,能够以端到端的方式逼近复杂物理问题的解,展现出在科学计算与工程仿真领域的强大潜力,尤其适用于高维或多物理场耦合问题的智能求解。; 适合人群:具备深度学习基础、偏微分方程知识及Python编程能力的研究生、科研人员,以及从事科学计算、工程仿真与人工智能交叉领域研究的专业技术人员。; 使用场景及目标:①掌握物理信息神经网络(PINN)求解偏微分方程的理论与实现流程;②完成无源项一维波动方程的神经网络建模、训练与结果可视化;③将该方法迁移应用于热传导、流体力学、电磁场等其他物理系统的建模与仿真研究; 其他说明:代码实现强调物理定律与数据驱动的深度融合,建议读者在学习过程中结合PyTorch框架特性与微分方程理论,通过调整网络层数、激活函数、损失权重和优化器参数等方式,探究不同配置对模型收敛速度与求解精度的影响,以深化对PINN工作机制的理解。

Trie树简介 ( 洛谷P2580题解 )

又称单词查找树,字典树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。

forezxl的博客 943

做量化没有实时数据怎么行?我找到一个超级好用的Python库,速度还贼快!

今天咱们介绍了 pytdx 这个神奇的库,重点包括:✅ 安装 pytdx✅ 连接 TDX 服务器✅ 获取实时行情数据✅ 获取 K 线数据✅ 获取分笔成交数据总之,pytdx 是一个速度快、免费、易用的量化利器,适合 A 股量化交易的同学们使用。如果你还在为数据发愁,赶紧试试吧!🚀顺手再看就是对花姐最大的支持,期待你的关注。

奔跑的蜗牛 5729

洛谷2444(Trie图上dfs判环)

要点 并没问具体方案,说明很可能不是构造。 思考不断读入这个文本串,然后中间不出现某些文法的串。啊,这就是个自动机。 将不合法串使用ac自动机构成一个Trie图,我们需要的字符串就是在这个自动机上无限走路但是却不会撞到危险节点。 这样只要从根开始跑dfs判有环即存在答案。 注意还要加上ac自动机的性质:某节点的fail指针指向的如果是危险的,则它也是危险的。"she"的'e'指向"he...

203

Docker Desktop 在 Windows 上的安装和使用

WSL 指 “”,这是一个在 Windows 10\11 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发的,旨在使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。这极大地拓展了Windows系统的功能,使用户能够在Windows环境中享受到Linux的强大功能。//Linux容器。

swadian2008的博客 6万+

Android安全支付(1)-整体架构-keymint

(1)接口定义hardware/interfaces/security/keymint/aidl/android/hardware/security/keymint/IKeyMintDevice.aidl。keymint是keymaster v4之后的替代设计。所以android 15上最好采用keymint的接口进行硬件功能的对接。同时,我们会集成一款紫光的芯片。3.可以用keyStore.getKey()来获取存储在keyStore中的数据进行加密和解密。四、关于keymint的接口定义和具体实现。

Android系统开发-VR OS-系统安全隐私 1770

Trie树(字典树)从入门到精通

Trie树,也叫字典树,字母树,单词查找树或键树,其实为一类前缀树。为什么叫它字典树呢?顾名思义,其拥有像字典一样的功能,通过trie树,我们能像查字典一样快速查阅许多信息。相信很多人以前会觉得在用度娘查英语单词时,你打到一半就会发现想查的单词弹出来,在学 trie树 之前,本蒟蒻一直觉得那是一件神奇的事情,肯定有复杂的算法,但是,学了 trie树 后,你会发现,那个其实挺简单的。............

yyh_getAC的博客 595

TiDB实战篇-数据库写入慢常见处理方式

TiDB实战篇-数据库写入慢常见处理方式

S1124654的博客 1011

洛谷试炼日记(manacher和trie树)(解题报告)

文章目录**manacher**P4555 [国家集训队]最长双回文串P1659 [国家集训队]拉拉队排练**Trie字典树**P3879 [TJOI2010]阅读理解P2292 [HNOI2004]L语言P2922 [USACO08DEC]Secret Message GP3065 [USACO12DEC]First! G manacher P4555 [国家集训队]最长双回文串 题目链接 思路:最开始只有一个n^2的思路,不用写都知道会T 看了大佬的思路之后恍然大悟 在求以位置i为中心的最大回文串长度时

juruo_c的博客 301

保姆级教程:2026版Windows电脑换新,微信QQ聊天记录无损搬家(附路径修改避坑指南)

本文提供2026版Windows电脑换新时微信QQ聊天记录无损迁移的保姆级教程,涵盖最新版微信/QQ的存储路径修改和避坑指南。通过详细步骤和实战技巧,确保数据迁移过程中不丢失任何珍贵对话记录和文件,特别适合需要保留完整聊天记录的用户。

weixin_42629815的博客 2486

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4144

洛谷试炼日记(图论)(解题报告)

文章目录**二叉树**P1087 [NOIP2004 普及组] FBI 树P1030 [NOIP2001 普及组] 求先序排列P1305 新二叉树P1229 遍历问题P5018 [NOIP2018 普及组] 对称二叉树树的直径P2195 HXY造公园P3629 [APIO2010]巡逻 二叉树 P1087 [NOIP2004 普及组] FBI 树 题目链接 直接暴搜咯 AC代码: #include<iostream> #include<cstdio> #include<cstr

juruo_c的博客 456

杰理外挂flash使用教程(四):制作fat32文件系统格式的资源文件

本文档提供了FAT文件系统镜像生成与资源打包的完整指南,包含两种实现方案:推荐的WSL/Ubuntu环境方案和Windows原生方案。详细说明了从创建空白镜像、格式化、资源文件复制到最终打包为设备可用的res.bin文件的完整流程,并对比了FAT32与FAT16的特性差异。文档还包含关键文件说明、使用注意事项和典型应用场景,适用于嵌入式系统开发、固件升级等场景。

qq_42014563的博客 1340

洛谷试炼日记(计算几何+图论)(解题报告)

文章目录**凸包** 断更两天我错了 真的错了 凸包

juruo_c的博客 582

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7372

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

洛谷算法竞赛生态全解析:从核心功能到高效学习路径

在线评测系统(OJ)是算法学习和编程竞赛的核心平台,其原理在于通过自动化评测机验证代码的正确性、时间与空间效率。这项技术的价值在于为学习者提供了即时反馈和标准化的训练环境,极大地提升了算法练习的效率与效果。在众多应用场景中,中文算法竞赛社区洛谷构建了一个集题目、评测、社区、教程于一体的完整生态。本文聚焦于洛谷平台,深入剖析其题目系统、评测机制与社区功能等核心模块,并融入题单规划和博客沉淀等实用技巧,旨在帮助用户系统性地提升算法能力,将平台工具价值最大化,从而在算法竞赛与工程实践中建立扎实基础。

weixin_30460489的博客 410

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

洛谷[3879] [TJOI2010]阅读理解(trie树模板)

题目链接:luogu3879P3879 [TJOI2010]阅读理解时空限制 2s / 128MB题目描述英语老师留了N篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。 输入输出格式输入格式:第一行为整数N,表示短文篇数,其中每篇短文只含空格和小写字母。 按下来的N行,每行描述一篇短文。每行的开头是一个整数L,表示这篇短文由

永无止境 1039

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Trie - 洛谷2580

题目:https://www.luogu.org/problemnew/show/P2580 分析: Trie模板题 代码: #include &lt;bits/stdc++.h&gt; using namespace std; const int tmax=55,tmax2=10000*30; int n,m,trie[tmax2][30],num,v[tmax2]; bool vi...

OI -> ACM -> AI 264

【Trie】洛谷P2922 秘密信息

链接 https://www.luogu.org/problem/show?pid=2922 大意 给定nnn个已加密元素,mmm个钥匙 (感性理解一下。。。) 问每把钥匙串与加密串的最长前缀 思路 TrieTrieTrie 用sumsumsum表示中间字符的出现次数,endendend表示当前串的出现次数 做一遍TrieTrieTrie即可 代码 #inclu...

Ajwallet 465

【bzoj3676】[Apio2014]回文串 后缀自动机

Description考虑一个只包含小写拉丁字母的字符串s。我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。请你求出s的所有回文子串中的最 大出现值。 Input输入只有一行,为一个只包含小写字母(a -z)的非空字符串s。 Output输出一个整数,为逝查回文子串的最大出现值。 Sample Input【样例输入l】 abacaba 【样例输入2] www Samp

DQS的树洞 1906
上一篇: 洛谷试炼日记(trie树和AC自动机)(解题报告)
下一篇: 回文自动机
juruo_c
博客等级 码龄6年 520粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值