SPOJ - NSUBSTR Substrings

IEEE Transactions on Industrial Informatics(TII)投稿全流程解析:从准备到成功提交 本文详细解析了向IEEE Transactions on Industrial Informatics(TII)投稿的全流程,涵盖从投稿前的格式准备、内容结构优化到在线提交系统实操等关键环节。重点强调了遵守TII严格的格式规范、双盲评审要求以及如何构建有说服力的学术叙述,旨在帮助研究者提升稿件质量,顺利通过评审。 阅读详情

题目:f[i]表示字符串str中长度为i的子串出现的最大次数,给你一个字符串,输出所有的f[i]

思路:对字符串str建立SAM,添加sc表示当前节点的出现次数,然后跑一遍字符串,把经过的节点的sc赋值1,然后每一个节点x都会影响到link[x],即sc[link[x]]+=sc[x],要按照拓扑序来更新。

dp[i]表示长度为i的子串出现的最大次数

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3f
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
//0x3f3f3f3f

const int MAXN = 500050, SIZE = 26;
struct SAM {
    int len[MAXN], link[MAXN], next[MAXN][SIZE],sc[MAXN];
    int total, last;
    inline int newNode(int L) {
        len[++total] = L; link[total] = 0;
        sc[total]=0;
        for(int i = 0; i < SIZE; ++i) next[total][i] = 0;
        return total;
    }
    inline void Add(int c) {
        int i, p = last, cur = newNode(len[last] + 1);
        for(; p && !next[p][c]; p = link[p]) next[p][c] = cur;
        if(!p) link[cur] = 1;//令其指向初始状态
        else {
            int q = next[p][c];
            if(len[q] == len[p] + 1) link[cur] = q;
            else {//>
                int clone = newNode(len[p] + 1);
                for(i = 0; i < SIZE; ++i) next[clone][i] = next[q][i];
                link[clone] = link[q];
                link[q] = link[cur] = clone;
				for(; p && next[p][c] == q; p = link[p]) next[p][c] = clone;
            }
        }
        last = cur;
    }
    void Init () {//根节点是1
        total = 0;
        last = newNode(0);
    }
}sam;
char str[MAXN];
int num[MAXN],idx[MAXN];
int dp[MAXN];
int main(){

    while(~scanf("%s",str)){
        sam.Init();
        for(int i=0;str[i]!='\0';i++)
            sam.Add(str[i]-'a');
        mm(num,0);
        for(int i=1;i<=sam.total;i++)
            num[sam.len[i]]++;
        for(int i=1;i<=sam.total;i++)
            num[i]+=num[i-1];
        for(int i=1;i<=sam.total;i++)
            idx[num[sam.len[i]]--]=i;

        int now=1;
        for(int i=0;str[i]!='\0';i++){
            int c=str[i]-'a';
            now=sam.next[now][c];
            sam.sc[now]++;
        }
        mm(dp,0);
        for(int i=sam.total;i>=1;i--){
            int now=idx[i],L=sam.len[now];
            dp[L]=max(dp[L],sam.sc[now]);
            sam.sc[sam.link[now]]+=sam.sc[now];
        }
        int len=strlen(str);
        for(int i=len-1;i>=1;i--)
            dp[i]=max(dp[i],dp[i+1]);
        for(int i=1;i<=len;i++)
            printf("%d\n",dp[i]);
    }
    return 0;
}


复旦微实现串口在线升级BOOT.BIN 将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash 阅读详情

相关推荐

STM32F103 超声波风速风向仪实战:0.1m/s精度风洞标定与OLED显示(附源码)

本文详细介绍了基于STM32F103的超声波风速风向仪设计与实现,通过超声波时间差测量技术实现0.1m/s高精度测量。文章涵盖硬件设计、算法实现、风洞标定及OLED显示等关键环节,提供完整源码,适用于气象监测、风力发电等领域。

weixin_42532938的博客 275

SPOJ - NSUBSTR Substrings

题目连接: https://vjudge.net/problem/SPOJ-NSUBSTR Description You are given a string S which consists of 250000 lowercase latin letters at most. We define F(x) as the maximal number of times that some str...

weixin_30311605的博客 160

GIS常用坐标系简介

EPSG:4326是基于WGS 84的地理坐标系,使用经纬度表示,适用于全局定位和地理数据表示。它的缺点是在进行距离、面积计算等地理分析时不够准确。EPSG:3857是投影坐标系,使用平面米坐标表示,适用于在线地图展示,特别适合 Web 地图应用。虽然它在地图展示中很高效,但由于投影引起的变形问题,它不适合高精度地理测量和计算。

weixin_59096287的博客 1976

SPOJ NSUBSTR Substrings

SPOJ NSUBSTR Substrings后缀自动机SAM题意给一个字符串长度n,求他所有长度为k的子串中出现最多的串的出现次数。要求输出所有k的答案。思路SAM,拓扑排序统计每个状态的endposamu(即每个状态的字符串出现的次数)后: 求出每一个状态的|endpos(st)|后,我们还需要求出每个长度的子串最多出现了多少次。假设ans[l]表示长度为l的子串最多出现的次数。不需要对于每

P.H.S 448

图自编码器(GAE)与变分图自编码器(VGAE)

在学习图自编码器之前先了解一下自编码器与变分自编码器。

小鱼的小窝 1万+

MATLAB控制信号发生器(USB-GPIB-HS)GPIB仪器控制教程(含matlab代码)

自动化测试时需要自动产生信号,通过matlab控制信号发生器的频率与功率,以实现自动化信号生成输出

qq_43686057的博客 1606

【spoj NSUBSTR】 Substrings

http://www.spoj.com/problems/NSUBSTR/(题目链接) 题意   给出一个字符串S,令${F(x)}$表示S的所有长度为x的子串出现次数的最大值。求${F(1)......F(length(S))}$ Solution   后缀自动机例题,下面写几点自己认为理解后缀自动机的重点。 后缀自动机相对于后缀树就是将Right集合相同的子串合用一个节点来表示...

weixin_30367169的博客 157

大模型LLM部署方式

建议根据实际需求选择方案,企业级服务优先考虑vLLM或TGI,个人用户可尝试Ollama或Hugging Face本地加载。若需完整代码示例,可参考网页2的VLLM实战或网页5的TGI部署案例。:高并发、低延迟的API服务,需分布式推理支持。:快速创建可分享的Web应用。:个人开发、快速原型验证。

u010249118的博客 516

[Substrings] SPOJ - NSUBSTR

题意: 求一个关于串的函数FFF,F[i]F[i]F[i]表示串中长度为iii的子串出现的最多次数 题解: 这道题就是求SAMSAMSAM中每个点的RightRightRight大小,因为每个endposendposendpos类表示的是出现次数以及位置一样的一类子串。对于这道题,我们只需要计算出这个Right集合的大小即可,因为fafafa树的某个节点Right集合是它父亲的真子集,所以我们可以...

qq_43544481的博客 186

高通410随身WiFi刷OpenWRT与Debian双系统一键集成方案

本文详细介绍高通410随身WiFi设备刷入OpenWRT与Debian双系统的一键集成方案。通过虎王工作室提供的一键刷机包,用户可轻松实现双系统部署,兼顾OpenWRT的网络功能与Debian的完整应用服务,适用于网络加速、服务器部署等多种场景,并提供了硬件资源分配与系统切换的实用指南。

docker7nomad的博客 1135

TensorFlow2深度学习实战(十四):目标检测算法 YOLOv4 解析

最易上手的【计算机视觉】小白教程!

不积跬步,无以至千里! 7630

SPOJ 8222 NSUBSTR Substrings

Substrings Time Limit: 1000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Submit]   [Go Back]   [Status]   Description You are given a string S which cons

码代码的猿猿 1104

【DRAM存储器五十五】LPDDR5介绍--command bus training

本文详细介绍了LPDDR5命令总线训练(CBT)的两种模式操作流程。在启用ODT进行高频/中频操作前,必须对命令总线进行训练,包括调整VREF(CA)电压和CA/CS信号时序。两种模式的主要区别在于VREF(CA)设置方式:模式1通过MR12直接设置,模式2通过DMI[0]引脚捕获DQ[6:0]数据更新MR12。训练流程涉及频率切换、模式寄存器配置、pattern发送及结果采样等步骤,最终确定最佳VREF(CA)和时序参数。文章还分析了不同PHY实现可能存在的差异,如训练pattern生成方式和采样次数等。

highman110的博客 648

SPOJ NSUBSTR - Substrings

链接 https://www.spoj.com/problems/NSUBSTR/en/ 题意 令 F(x)F(x)F(x) 表示字符串 SSS 的所有长度为 xxx 的子串中,出现次数的最大值 求 F(1)…F(Length(S))F(1)\dots F(Length(S))F(1)…F(Length(S)) 思路 后缀自动机上 dp 有两点要考虑: 每个状态代表的字符串集合出现的次数 当一个子串出现了 kkk 次,那么该子串的后缀也至少出现了 kkk 次 代码 #include <bits/

c4Lnn 的 优快云 博客 182

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

[SPOJ8222]NSUBSTR - Substrings

后缀自动机

srand(time(0)) 1099

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SPOJ - NSUBSTR Substrings

SPOJ - NSUBSTR Substrings(后缀自动机+拓扑排序+DP)

Insist111 262

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SPOJ NSUBSTR Substrings

Description You are given a string S which consists of 250000 lowercase latin letters at most. We define F(x) as the maximal number of times that some string with length x appears in S. For examp

Occult 503

spoj NSUBSTR Substrings

后缀自动机

YHaX的博客 440

SPOJ 8222 NSUBSTR - Substrings

http://www.spoj.com/problems/NSUBSTR/ 题意: F(x)定义为字符串S中所有长度为x的子串重复出现的最大次数 输出F[1]~F[len(S)] 用字符串S构建后缀自动机 若子串 str ∈状态s,那么子串str 在字符串S中出现的次数就是| Right(s) | 显然不能枚举所有状态的所有子串 但是我们可以线性的时间得到F[Max(s)...

weixin_30784501的博客 111

SPOJ NSUBSTR Substrings 后缀自动机

题目大意: 就是现在给出一个长度不超过25W的字符串S, 定义F(x)表示字符串S中长度为x的子串出现的最多次数, 例如“ababa"中F(1) = 3 (“a”出现了3次), F(2) = 2 ("ab“或者"ba"都出现了2次) F(3) = 2 ("aba"出现了2次) F(4) = F(5) = 1, 对于给出的字符串S, 长度为n, 输出F(1~n)的值 大致思路: 首先

Gatevin的专栏 1309

●SPOJ 8222 NSUBSTR - Substrings(后缀数组)

题链: http://www.spoj.com/problems/NSUBSTR/ 题解: 同届红太阳 ——WSY给出的后缀数组解法!!! 首先用倍增算法求出 sa[i],rak[i],hei[i]然后维护出 L[i]数组表示:在后缀数组中,排名最小(记其排名为 L[i])的后缀与排名i的后缀的LCP>=hei[i]同理,R[i]数组表示:在后缀数组中,排名最大(记其排名为 R[i...

weixin_30375247的博客 215

SPOJ:NSUBSTR - Substrings

题面 字符串SS S 最多包含2525 25 万个小写拉丁字母。我们将F(x)F(x) F(x) 定义为长度为xx x 的某些字符串出现在ss s 中的最大次数。例如,对于字符串“ababa”“ababa” “ababa”,F(3)F(3)F(3) 将为22 2,因为存在两次出现的字符串“aba”“aba” “aba”。您的任务是为每个ii i 输出 F(i)F(i)F(i),以便1&lt;=i...

Cyhlnj 325

SPOJ - NSUBSTR Substrings 后缀自动机

题意:令F(x)为长度为x的子串出现的最多次数,求所有F(x) 方法:构建后缀自动机,并对每个节点len做计数排序,然后从大到小进行拓补更新。注意到小的子串为大的子串所包含。所以有dp[i]=max(dp[i],dp[i+1])。PS:一个节点的深度所代表的串为root到该节点最远路程所经过的点串,即s(pos-len+1,pos)这一串。pos代表其在字符串中对应的相应位置。也就是说,我们可以

MY专栏 449
上一篇: SPOJ - LCS2 Longest Common Substring II 多个串的最长公共子串
下一篇: SPOJ - SUBLEX Lexicographical Substring Search 求字典序第k小的子串
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值