pku2406 Power Strings(kmp字符匹配,next数组)

Fast-LIO2轮速计融合实战:打滑检测与协方差调参避坑指南 多传感器融合是提升移动机器人定位鲁棒性的关键手段。在激光雷达与惯性测量单元(IMU)紧耦合的基础上,加入轮式编码器作为额外的速度约束,能够有效抑制长走廊、重复纹理等退化场景下的漂移。其核心原理是通过运动学模型将轮速转换为机体系速度,并作为因子引入迭代误差状态卡尔曼滤波器(ESIKF)。然而,打滑现象与协方差参数设置是融合成败的关键。本文从工程实践出发,系统梳理了传感器配置、外参标定、打滑检测策略(运动学一致性、轮速自洽性)以及观测噪声协方差R与初始协方差P0的调参方法,并给出实测参数与问题排查速查表,为在F 阅读详情
   重看了下数据结构,发现有些知识还没有吃透。kmp算法就是一个。kmp的关键就是next数组,求出了next数组后就和O(n*m)的算法类似。求next数组有dp的思想,假设知道next[i]=k,现在要求next[i+1],
                next[i]+1   ch[i]=ch[i+1]
   next[i+1]=   next[k']+1  沿着前面的next数组找到一个k',ch[k']=ch[i+1],简单情况就是k'=next[i]
                0           其他情况
书上还说的了next数组的优化,当ch[k]==ch[i+1]时,next[i+1]=next[k]。
附段伪代码:
algorithm kmp_search:
input:
an array of characters, S (the text to be searched)
an array of characters, W (the word sought)
output:
an integer (the zero-based position in S at which W is found)

define variables:
an integer, m ← 0 (the beginning of the current match in S)
an integer, i ← 0 (the position of the current character in W)
an array of integers, T (the table, computed elsewhere)

while m + i is less than the length of S, do:
if W[i] = S[m + i],
let i ← i + 1
if i equals the length of W,
return m
otherwise,
let m ← m + i - T[i],
if i is greater than 0,
let i ← T[i]

(if we reach here, we have searched all of S unsuccessfully)
return the length of S
  1. #include <iostream>
  2. using namespace std;
  3. #include <string.h>
  4. #define pr printf
  5.  char ch[1003003];
  6. int next[1003003];
  7. int main(int argc, char** argv) {
  8.     int len,i;
  9.     while(scanf("%s",ch))
  10.     {
  11.         len=strlen(ch);///书上的算法,数据结构
  12.         if(len==1 && ch[0]=='.')break;
  13.         next[1]=0;int j=0;i=1;
  14.         while(i<len)
  15.         {
  16.             if(j==0 ||ch[i]==ch[j]){++i,++j;next[i]=j;}
  17.             else j=next[j];
  18.         }
  19.         int tmp,cur,l; 
  20.             l=len-next[len];
  21.             tmp=len/(len-next[len]);
  22.         if(len%l!=0){pr("1/n");continue;}
  23.             else {
  24.                  cur=l-1;
  25.                  for(cur;cur<len;cur+=l)if(ch[cur]!=ch[l-1])break;
  26.                 if(cur>=len){
  27.                     pr("%d/n",tmp);
  28.                 }else pr("1/n");
  29.             }
  30.     }
  31.     return (EXIT_SUCCESS);
  32. }

Qt —— QWebEngineView加载谷歌离线地图(包含离线地图瓦片下载制作、附谷歌地图开发文档)   关注 微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。 笔者 - jxd 阅读详情

相关推荐

基于51单片机的电压表【0-20V,ADC0832,4051,自动量程】(仿真)

自动换挡式数字电压表就是一个基于单片机的能自动切换量程的数字电压表,其作用是在使用低位的AD转换实现高精度电压测量,可以测量0~20V的电压,并且具有0~0.2V(待测电玉低于0.2V时),0~2V(待测电压低于2V时)和0~20V三个量程自动匹配测量,当待测电压值发生变化时,电压表可以根据输入电压情况自动选择合适的量程进行测量,并且把测量结果显示出来。(2)实现电压表精度测试,最高精度要求0.01V;(1)实现0~20V分3档式电压表;

qq_63964231的博客 1498

PKU 2406:Power Strings 【KMP】

Power Strings Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submission(s) : 70   Accepted Submission(s) : 27 Problem Description Given two strings a and

所谓梦想,就是永不停息的疯狂。。。。。 1005

将雷达连接到树莓派的串口

dev/ttyAMA0 是树莓派的主要 UART(用于 GPIO 引脚 8 (TXD) 和 10 (RXD))。通常,树莓派使用 GPIO 引脚 8 (TXD) 和 10 (RXD) 进行串口通信。树莓派上通常有两个串口:/dev/ttyS0 和 /dev/ttyAMA0。你需要确认雷达的 TX 和 RX 引脚,并与树莓派的对应引脚连接。VCC(电源)连接到树莓派的 3.3V 或 5V(根据雷达的要求)MR(Receive)连接到树莓派的 GPIO 8 (TXD)GND(地)连接到树莓派的 GND。

qq_45943628的博客 1466

pku 2406 kmp 解题报告

一、 题目: Power Strings二、 题意: http://acm.pku.edu.cn/JudgeOnline/problem?id=2406三、 解决办法:kmp        首先要理解kmp的基本原理!对于kmp算法,由于我的数据结构的老师没有讲述到,就只好我自己去看书了,然而我本人智商有限,看这哪几页,也看不懂到底再说什么。简简单单的几行代码却让人想得头都晕!终于看到

find_my_dream的专栏 1636

保姆级教程:用Ubuntu 22.04搭建RustDesk中继服务器(含Cloudflare避坑指南)

本教程详细指导如何在Ubuntu 22.04上搭建RustDesk中继服务器,解决跨国远程协作的延迟问题。涵盖环境配置、Rust编译优化、服务部署及Cloudflare代理设置等关键步骤,帮助用户实现高性能的私有中继服务。

weixin_29002209的博客 527

【视频编码学习】AVS3参考软件HPM-4.1简单配置运行

1、用Visual Studio2017打开HPM-4.1文件夹 2、找到文件夹目录下x86_windows文件夹,因为是在win上运行该代码 3、然后找到对应vs版本(我当时2017版)的解决方案sln文件,双击打开可以看到该解决方案下的全部项目。 4、重新生成解决方案时发现提示sdk版本问题,所以右键点击所有的项目,选择重定向项目,修改一下sdk版本。 ...

谦虚勤奋诚实感恩 3100

pku2406 Power Strings

DescriptionGiven two strings a and bwe define a*b to be their concatenation. For example, if a = "abc"and b = "def" then a*b = "abcdef". If we think ofconcatenation as multiplication, exponentiation b...

zhouhongkai06的博客 269

python爬取淘宝数据

python爬取淘宝数据淘宝评论 淘宝评论 打开淘宝,选择打开需要爬取的商品的评论。在谷歌浏览器选择开发者工具,选择network,找到list_detail_rate.htm?itemId=624466733121,点击headers、previews,可以看见相应的评论数据。 爬取一页屏评论代码如下 import re import requests headers = { 'Referer': '在headers中', 'User-Agent': '在

qq_36333776的博客 5799

poj 2406 Power Strings(KMP)

Power Strings(pku 2406) 给定两个字符串 a 和b,我们定义 a*b 为两个字符串的联接。例如,a = "abc" 且 b = "def",则a*b = "abcdef"。把这个定义的运算看做多项式,则一个字符串的非负整数次幂定义如下: a^0 = "" (一个空字符串) 且 a^(n+1) = a*(a^n)。 输入: 每个测试样例为一行,即一个字符串s,其长

The_star_is_at的博客 476

基于 MATLAB 的精馏塔模拟仿真

基于 MATLAB 的精馏塔模拟仿真精馏塔是一种重要的化工设备,其中乙烯精馏塔和醋酸乙烯精馏塔是常见的两种精馏塔。本文基于 MATLAB 软件,给出了针对这两种精馏塔的模拟仿真代码。

与其临渊羡鱼,不如退而结网 904

WOFOST作物模型(7):6.0.6版本的PCSE使用(多层水分平衡和SNOMIN碳氮模型的集成)

wofost81文件结构如上,其中所需的参数可从github上获取然后input下有两个需要调用的功能函数py文件,需要拖到自己的运行py文件同级目录下在使用土壤模块SNOMIN进行作物生长模型模拟时,需要为土壤剖面的不同层次提供多种输入变量。这些变量通常不随年份变化,因此会统一在土壤文件中定义。本节将说明如何将这些输入变量整合到一个字典中,进而生成SNOMIN能够读取的土壤文件。

所有专家都曾始于新手 638

Pku acm 2406 Power Strings数据结构题目解题报告(十八)----kmp算法

关于kmp算法,大家都非常熟悉,其涵义非常难懂,以至于我学习kmp算法的时候一直怀疑自己的智商,其具体思想,这里就不多说了,网上也有很多资料,我用的是严蔚敏老师的书,实现也是按说上的方法实现的,推荐大家把kmp算法彻底弄明白了再做poj相关的几道题:2406 Power Strings 1961 Period 2752 Seek the Name, Seek the Fame。该题的题意是这样

苏强的专栏 4467

Unity3D实现自定义河流路径或泥石流路径

此工具是一个插件,插件很好用,可以根据地形编辑河流的走向以及宽度,也可以发挥想象编辑成其他的效果,比如泥石流效果,岩浆效果,小溪,或者大江或者大河等等博客将会介绍可以编辑河流的工具的使用。希望这篇博客对Unity的开发者有所帮助。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。提示:以下是本篇文章正文内容,下面案例可供参考本次总结的就是工具的使用, 有需要会继续增加功能不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!

心疼你的一切博客 5268

#P5637. Pku2406 Power Strings题解

摘要:本文提出利用KMP算法求解字符串由多少重复子串组成的问题。通过计算字符串的KMP前缀数组,若字符串长度能被(长度-末位前缀值)整除,则重复次数为该比值,否则为1。算法对每个输入字符串(长度≤10^6)进行处理,遇到"."时终止,输出各字符串的重复次数。例如"ababab"返回3,"abcd"返回1。时间复杂度接近线性,能高效处理大规模输入。

bz02_2023f2的博客 191

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

POJ 2406 Power Strings (KMP)

Power Strings Time Limit: 3000MSMemory Limit: 65536K Total Submissions: 29663Accepted: 12387 Description Given two strings a and b we define a*b to be their concatenation. For example, if a =...

weixin_30912051的博客 96

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ - 2406 Power Strings

Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 58285   Accepted: 24224 Description Given two strings a and b we define a*b to be their concatenation. For example, if a =...

LOVE&AI的博客 253

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

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

KMP经典习题

KMP 算法经典题目: pku2406 Power Strings http://162.105.81.212/JudgeOnline/problem?id=2406 pku1961 Period http://162.105.81.212/JudgeOnline/problem?id=1961  这个题目是1961的升级版,考察队next数组的应用,附上代码: #incl

Exchan 2218

数学类小结

pku 1150 The Last Non-zero Digit   和计算排列数末尾有多少个零有些类似,把2,5因子都拿出来,剩下的数的最后一个数字只有1,3,7,9。只有各位上的数字才会影响最后一个非零数字。统计可以用递归来统计,求出1~n中因子2,5的个数,以及3,7,9结尾的数和去掉2,5后新的到的数中3,7,9结尾的数。结果就是 2^(dig[2]-dig[5])*3^(dig[3])*

4706

pku 3533 Light Switching Game(nim 积)

 第一个nim积题目。nim积与nim和够成一个正整数域上的群。nim积用⊗表示,nim和用⊕表示。和乘法类似:    x⊗1=1⊗x=x    y⊗0=0    (x⊗y)⊗z=x⊗(y⊗z)⊕是异或运算。⊗的运算法则定义为:   1.The nimber product of distinct Fermat 2-powers (numbers of the form ) is equal to

1081

pku 1149 PIGS(最大流)

这题的网络是这样建的。设一个源点s,s将于客户节点相连,连接方式为对考虑一个猪圈是第一次被光顾s将于这位顾客之间有一条流容量是该猪圈的猪数,若这个猪圈被人光顾过,则在这个顾客和前一个顾客间有一条无限流量的通道。依次下去完成顾客节点和s,顾客节点和顾客阶段间的网络。最后是顾客和汇点的网络,每个顾客和汇点t都有条通道,容量是顾客希望购买的数量。       /*pku1149  Name: 

1053

基于频繁增长树(FP-树)的频繁项集挖掘算法实现

   花了两天的时间终于完成了。一开始照着论文实现了一下,总是感觉怪怪的,结果果然不对,论文里描述看上去都差不多,就是抓不住要点,最后还是看懂了原版paper,才实现了。感觉FP-Tree的实现并不难,就是一些链表指来指去,倒是觉得FP_growth函数不好写,这个函数主要是在一棵大FP-Tree上操作,来生产小FP-Tree树,最终得到只有一个枝的树,就能打印组合了。递归是肯定的。另外,第一次用

988

计算几何小结

pku 1039 Pipe    这题的最优解在于最优直线至少会过两个拐点,枚举拐点对。pku 1092 Farmland   总是是过了。这题有点像找凸包,不同的是凸包是以最左下点作为参考。首先对每个顶点的邻接点排序(按极角),以源点和顶点为参照边,从小到大排序其邻接点。通过排序后各顶点的邻接点按逆时针排列。下一步就是去找所以的封闭多边形,按着从一条边以该边为轴逆时针旋转到邻近的边,由于事先对邻

918

pku 1737 Connected Graph(组合数学,高精度)

package pku1737;import java.math.BigInteger;import java.util.*;public class Main {    static BigInteger f[];    public static void main(String[] args) {        int n;        Scanner 

879

pku 2348 Euclid's Game

这题的意思是说:给两个数,两个人轮流减少他们,不能再减的那个人输。每次只能在这两数中选小的(倍数)减大的.可以看出这类题不是NIM类题,因为每次减少的数目是不能确定下来的。先看些简单的情况。假设这两个数是a>b. 1。当a%b==0时,先行者胜,即(N-position). 2。当a%b!=0时, 设a=b*q+r。(q>1)   可以看出先者可以做出让a减b,2b,3b..qb这q种选择。在这些

769

hdu 2513 cake clicing(切蛋糕)

   这题是用四维过的。dp[i][j][h][w],i,j表示蛋糕的左上角,h,w代表高和宽。在dp前还要统计一下每个子蛋糕方块中樱桃的数目。状态转移方程是这样的(考虑行,列两种切法)   在[i][j][h][w]这块蛋糕中没有樱桃,则     dp[i][j][h][w]=0 否则       dp[i][j][h][w]=min{      dp[i][j][h][w-w0]+dp[i][

706

pku2352 Stars(线段树实现)

第一个线段树。。。线段树真是灵活多变啊。。。看来要好好掌握还要多加练习。。/*pku2352  Name: Stars  Date: 02-08-08 16:41  Description: 统计问题,线段树 */#include#define MAX 72010#define pr printf//  FILE * pp=fopen("temp.txt

684
上一篇: pku 1737 Connected Graph(组合数学,高精度)
下一篇: 二叉树和红黑树
J_Factory
博客等级 码龄19年 24粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值